如何在Scheme中实现这个功能

时间:2014-07-09 16:36:29

标签: scheme

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

我认为这样可行:(seq (lambda (x) (* x x)) '(0 2 7)) =&gt; (0 4 16 36)

1 个答案:

答案 0 :(得分:2)

这方面的基本解决方案是实施iotamap,并将两者结合起来:

  • iota生成给定开始,停止和步骤
  • 的数字列表
  • map在给定列表的所有元素上调用给定函数,并返回包含返回值的新列表

你必须编写这些函数,但是一旦你有了函数,你的seq函数很简单就可以将两者拼凑在一起了。