【发布时间】:2014-05-18 21:26:23
【问题描述】:
我试图实现一个 Haskell 代数数据类型链表(或者更准确地说,可能是类似链表的东西,因为我不知道使用 Haskell 进行内存寻址的任何方法)以及用于相互转换的辅助函数Haskell 的 naive list type 并写了以下内容:
data LinkedList a = Nill | Node a (LinkedList a) deriving Show
hlistTolinkedList :: [a] -> LinkedList a
hlistToLinkedList [] = Nill
hlistToLinkedList x:[] = Node x Nill
hlistToLinkedList x:xs = Node (x) (stringToLinkedList xs)
linkedListToHlist :: LinkedList Char -> [Char]
linkedListToHlist (Node a b) = a ++ linkedListToString b
linkedListToHlist Nill = ''
我收到以下编译器错误:
@5:1-5:21 Parse error in pattern: hlistToLinkedList
我不确定我的功能有什么问题。有人能解释一下吗?
【问题讨论】:
-
常规 Haskell 列表类型与您的类型一样可能是链表。
-
我很确定是的。
-
Haskell 没有承诺任何关于代表的事情,所以我很谨慎。 :)
标签: haskell linked-list algebraic-data-types