我可以通过映射( Traversable,mapM)或折叠(foldl,foldM)另一种可遍历的数据结构来构建一个数据结构,该数据结构是List类型(例如List或Map)的成员。但是,我经常遇到需要与Num类型类型的成员(例如Integer)一起构建可遍历数据结构的情况。这里我通常的方法是使用递归操作构建一个列表--例如:foo n fs | rem m使用上面的例子
例如,您可以在不定义递归结构的情况下在Haskell中定义列表吗?还是用某个函数替换所有列表?data List a = Empty | (a, List a) -- <- recursive definition我举了这个列表作为例子,但是我实际上是在询问所有的数据结构。也许对于所有需要递归的情况,我们只需要一个递归数据结构?与Y组合器一样,它是唯一需要的递归函数。@TikhonJelvis的回答让我想到了这一点。