【问题标题】:Translating a Lambda Expression into Scheme将 Lambda 表达式转换为 Scheme
【发布时间】:2011-09-18 20:18:50
【问题描述】:

我有这个 lambda lambda 表达式:λx.(λy.(λz.x(yz)))

我正在尝试用它编写一个 Scheme 表达式。

我这样做了:

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

对吗?如果没有,我做错了什么?

【问题讨论】:

    标签: scheme lambda-calculus


    【解决方案1】:

    我不太确定那个 lambda 表示法,但我认为你需要这个:

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

    你可以这样使用它:

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

    【讨论】:

    • 我正在使用 Win 7 和 DrRacket:我输入 (define (f x) (lambda (y) (lambda (z) (x (y z))))) 并按 Enter,一切正常。但是当我尝试按照你的建议使用它时,我得到:“在定义之前引用标识符:1+”你能解释一下为什么吗?
    • @endif: 1+ 在 Racket 中被称为 add1
    • Racket 中没有 1+ 的绑定。尝试使用 add1。
    猜你喜欢
    • 2010-12-12
    • 2012-01-15
    • 1970-01-01
    • 1970-01-01
    • 2017-09-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多