Scheme - 从函数列表中创建函数

时间:2014-02-06 06:55:00

标签: list function lambda scheme

嘿,我在思考这个问题时遇到了麻烦,希望得到一些帮助。

在Scheme中,如果给出了一个函数列表(list square - double),我需要创建一个包含列表的函数

例如

(let (f (co (list square - double))))  where co is the function name that combines

相同
(square (- (double n))) where n is some number
So you can do the following
(f 2) => (16) 

(define (co functions) (lambda (n) (? functions)))

我不知道从哪里去?我知道如果你映射它你最终得到应用于数字的函数但输出为列表所以它将是'(4 -2 4)。

任何想法都将不胜感激

1 个答案:

答案 0 :(得分:1)

希望这不是作业。

> (define double (lambda (n) (* n 2)))
> (define square (lambda (n) (* n n)))
> (set! fs (list square - double))
> (define co
    (lambda (functions n)
      (cond 
        ((null? functions) n)
        (else ((car functions) (co (cdr functions) n))))))
> (co fs 6)
144
> (co fs 4)
64
> (co fs 2)
16