2011-12-05 58 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))))