2011-12-05 93 views
1

我正在嘗試編寫一個函數,該函數接受基本上是函數的參數,並將返回該函數的逆向函數。我要通過使用lambda和apply來實現這一點。這是我迄今爲止......目前無法工作,因爲我似乎無法弄清楚如何定義一個lambda函數,它將接受任意數量的參數。任何額外的幫助,非常感謝。使用lambda寫入函數並應用

(define foobar (lambda (F) (lambda x(apply not (map x F))))) 

輸出示例:

((L3 <)4 3) - > #T

((L3 <)3 4) - > #F

(( L3 <)3 3) - > #T

((L3(L3 <))3 4) - > #T

((L3(L3 <))4 3) - > #F

回答

3

這裏的一個簡單實現negate功能:

;; negate : (Any * -> Boolean) -> (Any * -> Boolean) 
(define (negate f) 
    (lambda args 
    (not (apply f args))))