我有一个小小的菜鸟问题。我必须在方案中做基因编程的功课,第一步是完成一些给定的功能。
我必须执行一个随机生成的函数,其中包含一个范围内的所有可能参数(使用map)。 “功能”是类似'(* (+ 1 x) (- x (* 2 3)))
的列表。
如何使用给定参数执行它? (例如x = 2)。顺便说一下,生成的函数最多有1个参数(它是x或无)。
谢谢!
答案 0 :(得分:1)
这是我的解决方案:
(define (execute expr)
(lambda (x)
(let recur ((expr expr))
(case expr
((x) x)
((+) +)
((-) -)
((*) *)
((/) /)
(else
(if (list? expr)
(apply (recur (car expr)) (map recur (cdr expr)))
expr))))))
使用示例:
> (define foo (execute '(* (+ 1 x) (- x (* 2 3)))))
> (foo 42)
=> 1548