GBX*_*XWA 0 haskell linked-list algebraic-data-types
我试图实现一个Haskell代数数据类型链表(或者更准确地说是链接列表的东西,因为我不知道使用Haskell进行内存寻址的任何方法)以及用于转换到Haskell的简单列表的辅助函数输入并写下以下内容:
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 = ''
Run Code Online (Sandbox Code Playgroud)
我得到以下编译器错误:
@5:1-5:21 Parse error in pattern: hlistToLinkedList
Run Code Online (Sandbox Code Playgroud)
我不确定我的功能有什么问题.有人请解释一下吗?
使其编译所需的最小变化是简单地为非空列表的模式添加一些括号; 例如
hlistToLinkedList (x:xs) = ...
Run Code Online (Sandbox Code Playgroud)
通过要求括号表示复杂模式,编译器不需要知道每个构造函数需要多少个参数; 降低上下文敏感性和促进单独编译的重要技巧.