如何在Scheme中实现此功能

  • 本文关键字:实现 功能 Scheme scheme
  • 更新时间 :
  • 英文 :


Maple计算机代数系统有一个命令seq(f, i = m..n, step),它返回序列fm,…fn,其中fi是表达式f,其中符号i的所有出现都用mn的整数序列中的i的数值代替。实现一个方案函数(seq f (start step end)),并生成一个值列表(f(start), f(start+step),…), f(start+n*step)),其中n是最大的整数,使得start+n*step <= endstart+(n+1)*step > end

我认为这将工作:(seq (lambda (x) (* x x)) '(0 2 7)) => (0 4 16 36)

基本解决方案是实现iotamap,并将两者结合起来:

  • iota生成给定起始,停止和步长的数字列表
  • map对给定列表中的所有元素调用给定函数,并返回一个包含返回值的新列表

您必须编写这些函数,但是一旦编写好了,您的seq函数就是将两者拼接在一起的简单问题。

最新更新