haskell - 在递归之前有教学或学习map/reduce/等的经验吗?

标签 haskell functional-programming scheme sml

据我所知,使用Scheme在函数式编程中教授迭代结构的通常(也是我认为最好的)顺序是首先教授递归,也许稍后再学习map、reduce和所有SRFI-1过程等内容。我猜想,这可能是因为通过递归,学生拥有迭代所需的一切(如果他/她愿意,甚至可以重写所有 SRFI-1)。

现在我想知道是否尝试过相反的方法:使用 SRFI-1 中的多个过程,并且仅当它们不够时(例如,近似函数)才使用递归。我的猜测是结果不会很好,但我想知道过去使用这种方法的经验。

当然,这不是Scheme特有的;这个问题对于任何函数式语言也都有效。

一本在递归之前教授“应用程序编程”(组合器的使用)的书是 Dave Touretsky 的 COMMON LISP: A Gentle Introduction to Symbolic Computation ——但是,这是一本 Common Lisp 书,他可以在此之前教授命令式循环。

最佳答案

IMO 首先从基本知识 block 开始更好,然后得出结果。这就是他们在数学中所做的,即他们不在乘法之前引入乘方,在加法之前引入乘法,因为前者在每种情况下都是从后者推导出来的。我见过一些导师反其道而行之,我相信这并不像从基础到结果那么成功。此外,通过推迟更高级的主题,您给学生带来了心理挑战,要求他们使用他们已有的知识自己得出这些结果。

关于haskell - 在递归之前有教学或学习map/reduce/等的经验吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2965616/

相关文章:

haskell - 不是 Monad 约束

functional-programming - 是否可以在没有突变的情况下在 Scheme 中创建循环数据结构?

exception - 如何在 R6RS Scheme 中抛出和处理异常

haskell - 在存在递归绑定(bind)器的情况下,将 PHOAS 变量的正负事件分开

java - monad 的一般情况可以在 java 6 中表达吗?

haskell - 如何将重叠编译指示应用于派生实例

user-interface - Scheme 可以不用 Racket 做 GUI 吗?还是必须使用Common Lisp?

algorithm - Haskell 粒子模拟 - 计算粒子的速度

functional-programming - Clojure 中的命名参数函数

loops - 使用循环返回列表