【发布时间】:2011-10-19 23:48:38
【问题描述】:
我正在寻找一些非常简单、易于理解的递归方案和核心递归方案(变形、变形、hylomorphism 等)的解释,这些解释不需要遵循大量链接,也不需要打开范畴论教科书。我确信我已经无意识地重新发明了许多这些方案,并在编码过程中将它们“应用”在我的脑海中(我相信我们中的许多人都有),但我不知道我的(共同)递归方案是什么使用被称为。 (好吧,我撒谎了。我刚刚读到其中的一些,这引发了这个问题。但在今天之前,我不知道。)
我认为这些概念在编程社区中的传播受到了人们往往会遇到的令人生畏的解释和示例的阻碍——例如在维基百科上,但也在其他地方。
这也可能被他们的名字所阻碍。我认为还有一些替代的、更少数学的名称(关于香蕉和铁丝网的东西?),但我也不知道我使用的递归方案的更简洁的名称是什么。
我认为使用代表简单现实问题的数据类型的示例而不是二叉树等抽象数据类型会有所帮助。
【问题讨论】:
-
Jeremy Gibbons 有几篇论文可能是最好的介绍,因为它们清晰且在很大程度上是独立的。 “流表示改变器”(折叠和展开相结合),“程序理解的裂变”(变形和更多),“被低估的展开”(变形)。 cs.ox.ac.uk/people/publications/date/Jeremy.Gibbons.html
标签: haskell recursion functional-programming recursion-schemes