使用lambda编写函数并应用

时间:2011-12-05 15:48:35

标签: scheme

我正在尝试编写一个函数,该函数接受一个本质上是函数的参数,并返回该函数的反转。我将通过使用lambda和apply来实现这一目标。这是我到目前为止的...它目前不起作用,因为我似乎无法弄清楚如何定义一个将接受任意数量参数的lambda函数。非常感谢任何其他帮助。

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

示例输出:

<(>(L3 <)4 3) - &gt; #T

<(>(L3 <)3 4) - &gt; #F

<(>(L3 <)3 3) - &gt; #T

<(>(L3(L3 <))3 4) - &gt; #T

(p(L3(L3 <))4 3) - &gt; #F

1 个答案:

答案 0 :(得分:3)

以下是negate函数的简单实现:

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