haskell 如何访问自定义列表数据类型的元素?

im9ewurl  于 2023-02-09  发布在  其他
关注(0)|答案(1)|浏览(114)

我创建了一个自定义的列表类型,并尝试为它实现zip函数。但我无法理解它,它总是在最后一行抛出错误。

data List a = Empty | Cons a (List a) deriving (Eq, Ord, Show, Read)

listZip :: List a -> List a -> List a
listZip _ Empty = Empty
listZip Empty _ = Empty
listZip (Cons x1 (x2)) (Cons y1 (y2)) = Cons (Cons x1 y1) (listZip x2 y2)
busg9geu

busg9geu1#

返回类型看起来不对,你可能想返回一个2元组的列表,所以:

listZip :: List a -> List a -> List (a, a)

或更一般的:

listZip :: List a -> List b -> List (a, b)

然后使用以下命令实现此操作:

listZip :: List a -> List b -> List (a, b)
listZip _ Empty = Empty
listZip Empty _ = Empty
listZip (Cons x1 (x2)) (Cons y1 (y2)) = Cons … (listZip x2 y2)

这里我将部分作为练习。

相关问题