如何将运算符传递给scheme函数

时间:2012-03-16 13:23:24

标签: scheme operators

我遇到了一个方案功能问题。

(define myfun(operator lis)
   (if(null? lis)
     '()
    (cons(operator (car lis)(car lis))myfun(operator (cdr lis))
))))

该函数将运算符作为参数和列表,例如(+'(1 2 3 4)) 我尝试调用该函数时得到的错误是:期待一个数字但收到一个列表。所以我的问题是如何用运算符和列表递归调用函数?

更新:在操作员面前只需要一个'符号。

1 个答案:

答案 0 :(得分:4)

只需将+传递给该函数,无需任何引用。 +表示添加功能。

(define (apply-op op x)
  (op x x))

将执行

(apply-op + 2)  ==>  4