Scheme - 让函数为列表的每个成员从另一个函数返回一个值

时间:2014-05-25 21:58:50

标签: function return scheme

我正在尝试编写一个函数,该函数返回列表中每个元素的值,但代数运算将在另一个函数上实现。这是我的第一步:

  

(定义(基本列表另一个有趣)
  ;列表中的每个成员都将是   发送给enother-fun并将所有返回作为值)

     

(定义(funk a)(lambda(c)(* a c)       ))

     

(define(funkc a)(lambda(c)( - a c)       ))

以下是我的意见:

  

(定义基数'(1 2 3 4 5)(放克2))=> (1 2 3 4 5 6)not'(1 2 3 4 5 6)

     

(定义基数'(1 2 3 4 5)(funkc 1))=> (1 2 3 4 5 6)not'(0 1 2 3 4 5)

1 个答案:

答案 0 :(得分:1)

您尝试实施的功能称为map,它是Scheme中的标准内置程序。试试这个:

(define (funk a)
  (lambda (c) (* a c)))

(define (funkc a)
  (lambda (c) (- a c)))

(map (funk 2) '(1 2 3 4 5))
=> '(2 4 6 8 10)

(map (funkc 1) '(1 2 3 4 5))
=> '(0 -1 -2 -3 -4)

这里是SICP书籍的link,解释了如何实施自己的map版本,以防您想从头开始编写。