我正在尝试制作一个包含子列表的列表,例如[1, 2, [3, 4], [3, [4, 5]]]
.
看来我应该定义一个新类型。我试过:
data NestedList a = Int a | List [NestedList a]
但我认为它错了,或者我不知道如何使用它。我对 Haskell 很陌生,我不确定这个表达式的含义。
这是否意味着它正在创建一个Int
带有参数的“类型”和一个带有参数的a
“类型” ?List
[NestedList a]
上面的data
表达式取自Haskell 99 题第 7题的解法
(**) 展平嵌套列表结构。
data NestedList a = Elem a | List [NestedList a] flatten :: NestedList a -> [a] flatten (Elem x) = [x] flatten (List x) = concatMap flatten x
但是当我打电话时flatten [[1,2], 3]
,ghci
我得到了错误
couldn't match expected type 'NestedList a0' with actual type '[t0]'