我遇到了一个方案功能问题。
(define myfun(operator lis)
(if(null? lis)
'()
(cons(operator (car lis)(car lis))myfun(operator (cdr lis))
))))
该函数将运算符作为参数和列表,例如(+'(1 2 3 4))
我尝试调用该函数时得到的错误是:期待一个数字但收到一个列表。所以我的问题是如何用运算符和列表递归调用函数?
更新:在操作员面前只需要一个'
符号。
答案 0 :(得分:4)
只需将+
传递给该函数,无需任何引用。 +
表示添加功能。
(define (apply-op op x)
(op x x))
将执行
(apply-op + 2) ==> 4