我认为形成这个问题的最好方法是举个例子......所以,我决定询问这个问题的实际原因是因为Problem 55 on Project Euler。在这个问题中,它要求找到低于10,000的Lychrel数。在命令式语言中,我会得到导致最终回文的数字列表,并将这些数字推送到我的函数之外的列表中。然后,我会检查每个传入的号码,看它是否是该列表的一部分,如果是,只需停止测试并得出结论,该号码不是Lychrel号码。我会用非lychrel数字及其前面的数字做同样的事情。
我之前已经做过这件事并且很好地完成了。但是,实际上在Haskell中实现这一点似乎是一个很大的麻烦,而不是在我的函数中添加一堆额外的参数来保存前辈,而且一个绝对的父函数来保存我需要存储的所有数字。
我只是想知道我在这里是否有某种工具,或者是否有任何标准可以做到这一点?我已经读过Haskell有点“自然缓存”(例如,如果我想将奇数定义为odds = filter odd [1..]
,我可以随时提到它,但是当我需要时它似乎变得复杂动态地将元素添加到列表中。
有关如何解决此问题的任何建议吗?
感谢。
PS:我不是要求回答Project Euler问题,我只是想更好地了解Haskell!