据我所知,使用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/