2011-09-18 66 views
0

我有这样的λlambda表达式:λx(λy(λz.x(YZ))。)翻译lambda表达式到方案

我试图写一个计划表达出来的。

我这样做:

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

是吗?如果不是,我做错了什么?

回答

2

我不太清楚有关拉姆达格式,但我认为你需要这样的:

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

,你可以使用它像这样:

(((f sqrt) 1+) 3) 
2.0 
+0

进出口使用Win 7的和DrRacket: 我把(define(fx)(lambda(y)(lambda(z)(x(yz)))))并按回车,一切正常。 但是,当我尝试使用它像你建议我得到的:“在定义之前引用标识符:1+”你能解释为什么吗? – krunarsson

+3

@endif:'1 +'在球拍中被称为'add1'。 –

+1

球拍中没有1+的绑定。尝试使用add1。 –