2014-02-06 55 views
0

嘿,我很难想到这个问题,并希望得到一些帮助。计划 - 从函数列表中创建一个函数

在流程,如果我给出的函数列表(名单广场 - 双),我需要做的是将包括列表

例如函数

(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

希望它不是一个功课。

> (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