2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему На страницу Пред.  1, 2
 
 Re: Haskell. BinaryTree. Помогите найти ошибку в синтаксисе.
Сообщение18.06.2015, 20:53 


16/12/14
472
Xaositect
Я надеюсь, что время придет и для этого. Кстати, не могли бы посоветовать хороший материал по конкретно монадам, возможно, статья или еще что.

P.S. Я поменял isLeaf вот так:
Используется синтаксис Haskell
isLeaf :: BTree Int -> Bool
isLeaf tree = if ((isNil (getLeftBranch tree)) && (isNil(getRightBranch tree))) then True
                                                                                else False

Но ошибка все таже, правда вконце он напечатал "", то есть сработала первая охрана в Treeoutput. Что совсем сбивает с толку, так как почему-то он игнорирует часть дерева, так если бы ее не было.

 Профиль  
                  
 
 Re: Haskell. BinaryTree. Помогите найти ошибку в синтаксисе.
Сообщение18.06.2015, 21:10 
Заслуженный участник
Аватара пользователя


06/10/08
6422
Pulseofmalstrem в сообщении #1028656 писал(а):
Я надеюсь, что время придет и для этого. Кстати, не могли бы посоветовать хороший материал по конкретно монадам, возможно, статья или еще что.
Мне нравится http://blog.sigfpe.com/2006/08/you-coul ... s-and.html . Ну и для начала хорошо бы понимать типы, конструкторы типов и классы типов.

-- Чт июн 18, 2015 20:43:46 --

Pulseofmalstrem в сообщении #1028656 писал(а):
Но ошибка все таже, правда вконце он напечатал "", то есть сработала первая охрана в Treeoutput. Что совсем сбивает с толку, так как почему-то он игнорирует часть дерева, так если бы ее не было.
Посмотрите внимательно, что у Вас делает pop:
Код:
*Main> let tree = (fromListtoTree [1, 2, 3, 4, 5, 6, 7] (empty))
*Main> tree
Node 1 (Node 2 (Node 4 (Node 7 Nil Nil) Nil) (Node 6 Nil Nil)) (Node 3 (Node 5 Nil Nil) Nil)
*Main> pop tree
Node 2 (Node 4 (Node 7 Nil Nil) Nil) Nil

 Профиль  
                  
 
 Re: Haskell. BinaryTree. Помогите найти ошибку в синтаксисе.
Сообщение19.06.2015, 02:22 


05/09/12
2587
arseniiv в сообщении #1028521 писал(а):
Тут лучше использовать parser combinators, но вряд ли они будут понятны сразу же, а встроенной функции специально для этого нет.

Парсер комбинаторы я даже в своем интерпретаторе Лискрипта не использую, а вы их советуете для такой задачки :-) Есть сайты с олимпиадными задачками с выбором языка решения, в том числе и Haskell, там входные-выходные данные берутся получаются из стандартных потоков ввода-вывода, и формат входных данных чаще всего именно такой. И конечно никто не использует парсек или аттопарсек, а пишут просто и сердито:
Используется синтаксис Haskell
main = do
    l <- getLine
    print $ map (\x -> read x::Int) $ words l
 

 Профиль  
                  
 
 Re: Haskell. BinaryTree. Помогите найти ошибку в синтаксисе.
Сообщение19.06.2015, 18:04 


16/12/14
472
Всех благодарю за помощь, на данный момент я успешно достиг желанного результата. Если интересно могу выложить мой код сюда.

 Профиль  
                  
 
 Re: Haskell. BinaryTree. Помогите найти ошибку в синтаксисе.
Сообщение20.06.2015, 02:47 
Заслуженный участник


27/04/09
28128

(Оффтоп)

_Ivana в сообщении #1028749 писал(а):
Парсер комбинаторы я даже в своем интерпретаторе Лискрипта не использую, а вы их советуете для такой задачки :-)
Заинтересовали, теперь придётся смотреть, какой у вас подход. :-) (Попозже.) Там-то одной lines из-за использования строк будет недостаточно…

P. S. Виджу. Ну нет уж, лучше комбинаторами. :lol:

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 20 ]  На страницу Пред.  1, 2

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group