我想知道我对列表的定义是否比常规实现的能力低。我在创建具有以下定义的列表列表时遇到问题:
data List a =
Nil
| Cons a (List a)
deriving (Eq, Ord, Show)
我没有看到如何使用我对list的定义来创建像[[2],[3]]
这样的列表。
嵌套列表的最简单实例只是[[]]
,我认为我可以使用Cons Nil Nil
重新创建。嵌套列表的第二个最简单的实例是[[1]]
。这是Cons (Cons 1 Nil) Nil
afaics。
但是,就像我说的那样,看不出如何使用上面的定义创建列表[[2],[3]]
。我该怎么做? (应该可以,因为练习要求我为上面的列表定义创建一个monad实例)。
答案 0 :(得分:3)
我们首先考虑一下,您将如何表达[x,y]
?
Cons x (Cons y Nil)
现在放入x = [2]
:
Cons (Cons 2 Nil) (Cons y Nil)
和y = [3]
:
Cons (Cons 2 Nil) (Cons (Cons 3 Nil) Nil)