Позволяет сказать, что я сделать мое дерево, как этотHaskell Binary Tree с только обугливается
data Tree a = EmptyTree | Node a (Tree a) (Tree a) deriving (Show, Read, Eq)
Но я хочу, чтобы сделать дерево, которое использует только символы не нужно быть шаблона. Я знаю, что мое дерево будет использовать только символы, если я сделаю это как выше, я не могу сделать if dataOfNode == ')'
в функции, потому что он говорит, что это тип [char] и он ожидает тип [a].
Как создать дерево, которое будет использовать только символы или есть способ сделать этот тип проверки dataOfNode == ')'
с этим типом дерева, которое я дал. Можете ли вы дать мне короткий пример функции, которая, скажем, проверит, являются ли данные в этом узле знаком «)»?
Edit:
По просьбе я отправляю функцию, которую я хотел бы сделать `
buildTreeHelper :: (Ord a) => String -> a -> Int -> String -> Tree a -> Tree a
buildTreeHelper str blank turn path t
| str == [] = t
| front == '(' = buildTreeHelper (tail str) blank 1 ('L':path) (expandTree (reverse path) blank t)
| front == ')' = buildTreeHelper (tail str) blank 2 (tail path) t
| turn == 1 = buildTreeHelper (tail str) blank 2 (tail path) (expandTree (reverse path) front t)
| turn == 2 = buildTreeHelper (tail str) blank 3 ('R':path) (expandTree (reverse path) front t)
| turn == 3 = buildTreeHelper (tail str) blank 2 (tail path) (expandTree (reverse path) front t)
where
front = head str
Логически она не закончена, но я не могу использовать его, потому что он принимает строку, которую я divade char by char. Вот почему я уверен, что хочу сделать свое дерево только из символов, поэтому я могу заменить type a
на type char
в начале функции. У него есть и другие ошибки, но я думаю, что основная идея понятна.
Включите код, который вы пробовали, что не работает. –
Хорошо, я отредактирую его за 2 минуты. – user3129475
Тег 'templates' вместе с' haskell' может привести к недоразумениям. Заменяя его на 'type-variables' – Odomontois