繁体   English   中英

从 Haskell 中的自定义数据类型制作列表(也可以反向操作)

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM