2014-07-09 100 views
0

楓葉計算機algeba系統有一個命令seq(f, i = m..n, step),它返回序列fm,... fn,其中fi是與符號i的所有出現通過的數值替換表達式fi,其整數從mn。實施方案功能(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)

回答

2

的基本解決方案是實行iotamap,並結合二:

  • iota生成給出起動號碼列表,停止,並且步驟
  • map在給定列表的所有元素上調用給定函數,並返回包含返回值的新列表

你必須編寫這些函數,但是一旦你有了,你的seq函數就簡單地將兩者結合在一起。