Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу Дерево на haskell с чего начать
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
Татаnt Татаnt вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.12.2009
По умолчанию Дерево на haskell с чего начать - 12.12.2009, 10:24

я написала программу на haskell, но не могу до конца реализовать
подскажите пожалуйста
data Tree a = Leaf a | Branch (Tree a) (Tree a) deriving (Read,Show)
readsTree :: (Read a) => ReadS (Tree a)
readsTree s = [(Branch l r, x) | ("<", t) <- lex s,
(l, u) <- readsTree t,
("|", v) <- lex u,
(r, w) <- readsTree v,
(">", x) <- lex w ]
++
[(Leaf x, t) | (x, t) <- reads s ]

или еще пробовала

Код:
data Tree a = Fork (Tree a) (Tree a) | Leaf a | Stump
join :: (Tree a) -> (Tree a) -> (Tree a)
join Stump t = t
join s Stump = s
join s t = Fork s t
readsTree xs = readsTree' Stump xs
readsTree' t [] = [(t, [])]
readsTree' t ('(':xs) = concat [readsTree' (join t u) ys | (u,ys) <- readsTree' Stump xs]
readsTree' t (')':xs) = [(t, xs)]
readsTree' t (x:xs) = concat [readsTree' (join t (Leaf y)) xs | (y, ys) <- reads [x]]
instance Read a => Read (Tree a) where
readsPrec _ s = readsTree s
но не могу задать на ней дерево
Вот отдельно реализация глубины

Код:
data Tree a = Tip | Node a (Tree a) (Tree a)
height Tip = 0
height (Node _ xl xr) = 1 + max (height xl) (height xr)
main = do print(height(Node 1 (Tip)(Tip)))
при написании пользовалась
http://community.haskell.org/~ndm/parsing/
подскажите пожалуйста
Ответить с цитированием
  (#2 (permalink)) Старый
Татаnt Татаnt вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.12.2009
По умолчанию 12.12.2009, 10:25

Проблема в том, что дерево надо задавать с консоли или считывать из файла. Две верхние программы запускаются, но, когда я задаю функцию readsTree
выдает ошибку. Например, для второй программы: readsTree' (Stump) []. Может я не понимаю чего-то, подскажите, пожалуйста, как их запустить.
Ответить с цитированием
  (#3 (permalink)) Старый
calabi-yau calabi-yau вне форума
Member
 
Сообщений: 338
Сказал(а) спасибо: 0
Поблагодарили 10 раз(а) в 10 сообщениях
Регистрация: 28.09.2009
По умолчанию 12.12.2009, 13:05

Цитата:
Проблема в том, что дерево надо задавать с консоли или считывать из файла. Может я не понимаю чего-то, подскажите, пожалуйста, как их запустить.
1. Получить данные из файла/консоли (readFile, getLine)
2. Применить к ним функцию readsTree
Код:
readFromFile :: (Read a) => String -> IO [(Tree a, String)]
readFromFile path = readsTree `liftM` (readFile path) 

readFromConsole :: (Read a) => IO [(Tree a, String)]
readFromConsole = readsTree `liftM` getLine
Ответить с цитированием
  (#4 (permalink)) Старый
Татаnt Татаnt вне форума
Новичок
 
Сообщений: 8
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 12.12.2009
По умолчанию 12.12.2009, 16:23

Спасибо большое за помощь :-D
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
с чего начать? Member Вопросы начинающих программистов 32 02.03.2012 00:08
C# с чего начать? shket Вопросы начинающих программистов 6 07.01.2012 17:58
Парсинг xml на Haskell с чего начать FireEvenger Haskell 2 09.01.2011 00:30
С чего начать Nemezido Электроника 163 26.12.2008 21:35
С чего начать переустановку ОС? alex95 Любые вопросы от новичков 35 06.09.2008 19:28
С чего начать? artishok Форум программистов 3 28.03.2008 13:24
с чего начать? LыSы` Охлаждение и разгон 2 21.07.2007 11:00
С чего начать? Killer86 Моддинг 8 07.05.2007 19:42
HASKELL как создать бинарное дерево aimatme Lisp 0 25.04.2007 22:19
С++ с чего начать работу integ Программирование графики 3 12.04.2007 08:36
С чего и как начать? Worm PHP 2 09.07.2006 10:40
CGI и GCC с чего начать default C++ на Unix 10 06.12.2004 08:09



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов