[英]Make list from a custom data type in Haskell (reverse operation also)
我将学习如何使用 Haskell 将数据类型转换为数组。 这是一种情况,因为我需要从数据中获取如下信息:
data List a = Nil | Cons (List a) a
listToList :: List a -> [a]
listToList Nil = []
listToList (Cons Nil a) = [a]
...another pattern match, I guess...
在没有非详尽匹配的情况下(可能是扁平化),这里缺少什么来完成这个转换? 我有些尴尬,因为对如何处理缺乏理解。 此外,我将不胜感激任何有关反向功能的提示(从 [a] 到列表 a)。
你可以在这里制作一个累加器。 您定义一个辅助函数,在其中传递一个值,并且每次递归调用都会传递该值的一个稍微修改过的副本。
因此,您的listToList
将如下所示:
listToList :: List a -> [a]
listToList = go []
where go … = …
在这里你仍然需要实现go
。 go
签名是go :: [a] -> List a -> [a]
。 如果遇到Nil
,则可以返回累加器。 如果遇到Cons xy
,则在累加器前面加上y
并在x
递归。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.