从函数定义中删除嵌套的lambdas

时间:2013-10-31 13:27:26

标签: scheme

我必须从以下代码中删除每个lambda,并且我不能在全局空间中使用其他函数。 (((f 1) 2) 3)应生成6

(define f (lambda (x)
            (lambda (y)
              (lambda (z)
                (+ x y z)))))

我尝试在define中使用define,但问题在于(((f 1) 2) 3)必须提供6。如果在函数外部给出,我不知道如何使用23内部函数f?如果lambda在“引擎盖下”,那就没关系了,只是不可见。

1 个答案:

答案 0 :(得分:1)

尝试

(define (f x)
  (define (g y)
    (define (h z)
      (+ x y z))
    h)
  g)

(define (((f x) y) z)
  (+ x y z))