gpt4 book ai didi

lambda - 如何在 DrRacket Scheme 中使用 lambda

转载 作者:行者123 更新时间:2023-12-01 02:32:13 24 4
gpt4 key购买 nike

我想问你是否可以帮助我进行编程练习。我正在尝试制作这种形式的 lambda 表达式:

λz.x(yz)

我的理解是 y是一个函数,应用于值 z .然后 x是一个函数,如果函数 y应用于 z .然后整个表达式是这样说的:
λz.x(yz) means: Do the following with the argument z:
  • 应用功能yz .
  • 应用功能x第一个程序的结果。

  • 我制作了这个程序来尝试让 Scheme 完成上述所有操作:
    (define (zlamb)
    (lambda (z)
    (lambda (x)
    (* (lambda (y) (* z 4)) 2))))

    当我运行它时,我得到的只是:
    Welcome to DrRacket, version 5.3 [3m].
    Language: R5RS; memory limit: 128 MB.
    ( (zlamb) 3)
    procedure:...lambdaefing1.rkt:3:4
    >

    有人可以向我解释我做错了什么吗?我想得到的是 (3 * 4) * 2 = 24 .所以我做了(或认为我做了)内部函数 y = z * 4和外部函数 x = y(z) * 2 .

    我在互联网上搜索了所有解释,但在大海捞针中找不到我正在寻找的特定针。

    最佳答案

    Arafinwe 所说的一切对我来说都非常有道理。但是,我仍然担心你可能误解了你的任务。

    更具体地说,lambda 演算本质上是方案术语的子集,语法略有不同。特别是 lambda 演算项 λz。在 Scheme 中写为 (lambda (z) )。好吧,需要注意的是也必须翻译。

    应用程序 (zx) 在 Scheme 中简单地写为 (z x)。此外,数学家很懒惰,他们有时会省略括号,所以 a(bc) 实际上是 (a (b c)) 的简写。我正在努力不直接翻译你的术语,在这里:)。

    但是请注意,将给定的 lambda 演算项直接翻译成 Scheme 将不是一个格式良好的程序,因为它包含自由引用(“未绑定(bind)变量”)y 和 z。

    关于lambda - 如何在 DrRacket Scheme 中使用 lambda,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12504411/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com