我这几天一直在研究褶皱.我可以实现简单的功能与他们一样length,concat和filter.什么我被困在试图与实现foldr类似功能delete,take和find.我用显式递归实现了这些,但对我来说,如何将这些类型的函数转换为右折叠似乎并不明显.
我研究了Graham Hutton和Bernie Pope的教程.模仿Hutton dropWhile,我能够实现delete,foldr但它在无限列表上失败.
从阅读器中使用foldr实现插入haskell,如何使用foldr编写此函数?和使用foldr实现take,似乎我需要foldr用来生成一个函数然后做一些事情.但我并不真正理解这些解决方案,也不知道如何以delete这种方式实现.
您能否向我解释一下实现foldr懒惰版本功能的一般策略,比如我提到的那些功能.也许你也可以delete作为一个例子来实现,因为这可能是最简单的一个.
我正在寻找一个初学者可以理解的详细解释.我对解决方案不感兴趣,我想发展一种理解,所以我可以自己提出类似问题的解决方案.
谢谢.
编辑:在写作的那一刻有一个有用的答案,但它不是我想要的.我对使用foldr生成函数的方法更感兴趣,然后该函数执行某些操作.我的问题中的链接都有这样的例子.我不太了解这些解决方案,所以我希望获得有关此方法的更多信息.