gpt4 book ai didi

scheme - 如何在Scheme中的列表中应用匿名函数?

转载 作者:行者123 更新时间:2023-12-04 13:25:10 25 4
gpt4 key购买 nike

我正在学习计划。下面的代码有什么问题我想编写一个程序,该程序从列表中获取第一个函数,然后将其应用于数字?

    (define num  3)

;;I want to do something like this which returns 3
((λ (x) x)num)

;;but my functions are in a list so this should return3
((first '((λ (x) x) (λ (x) (* x x)))) num)

我在上面的代码中收到此错误:
程序应用:预期程序,给定:(λ(x)x);论据是:3

当我得到这些输出时是什么意思?

当我什么都不应用时,我会得到一个不错的输出。
(first '((λ(x) x)(λ(x) (*x x))))

返回(λ(x)x)

最佳答案

您引用的是lambda,因此未对其进行评估。

如果仅在提示时输入(λ(x)x),DrScheme将显示#<procedure>,这意味着它实际上已经评估了lambda,并给了您一个闭包。通过引用它,您可以为Scheme仅仅提供一个符号列表。

如果要将函数放在列表中,可以执行以下操作:

((first (list (lambda (x) x) (lambda (x) (* x x)))) num)

引用允许您生成一个列表,是的,但是其内容未评估。在对函数进行评估之后,list函数将根据其所有参数生成一个列表。

如果您愿意,也可以准引用列表:
((first `(,(lambda (x) x) ,(lambda (x) (* x x)))) num)

关于scheme - 如何在Scheme中的列表中应用匿名函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/942580/

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