如何通过此数据类型表示形式表示列表列表

时间:2019-06-08 17:26:40

标签: list haskell types implementation

使用:

data type List a = Empty | Cons a (List a)

一个人如何代表[[a]]?这必须有一个简单的解决方案,我只是盲目的,所以非常感谢某人的意见,谢谢!

我尝试使用List (List a)List (Cons x xs),但是在我认为没有意义的范围内以“列表”作为响应。

1 个答案:

答案 0 :(得分:4)

{p}的列表的类型的确是a。但是我们不以此构造 value

例如,如果我们要构造一个包含List (List a))的单例列表的列表,则可以这样写:

1

外部oneList1 :: List (List Int) oneList1 = Cons (Cons 1 Empty) Empty是外部列表的缺点,因为它的第一个(也是唯一)元素具有Cons,这是内部列表。 Cons 1 Empty代表一个列表,其中Cons h t(在这里是h)的头(第一个元素)和1的尾(其余元素)。因此Empty是一个单例列表,其中Cons 1 Empty是唯一值。

我们将其包装在外部cons 1中,从而指定外部列表也是单例列表。 Cons (Cons 1 Empty) Empty等效于oneList1