使用lambda表达式在Scheme中定义函数的原因是什么?

 honey热情沙漠 发布于 2023-02-07 15:47

我正在阅读Daniel Friedman撰写的The Little Schemer一书.我不明白为什么书中的每个函数都是用lambda表达式编写的.

(define fun1
  (lambda (x1 x2)
    (+ x1 x2)))

(define (fun2 x1 x2)
  (+ x2 x2))

这两个功能做同样的事情,但第二个功能更整洁.我很好奇在各地使用lambda的原因.

在这种情况下我使用了DrRacket.

1 个回答
  • (define (x . a) ...) 
    

    只是一个缩写

    (define x (lambda a ...))
    

    在1975年的第一个方案报告中,你没有这个缩写.在1978年的修订报告中,它被引入.

    这个小小的Schemer只是1974 年的The Little Lisper的后期版本.它早于Scheme,当它被修复为遵循Scheme时,他们试图保持尽可能接近原始版本.此外,当你使用(define x (lambda (arg1) ...))它时,很明显程序绑定与其他变量绑定没有区别,它指向的对象是闭包代码而不是数据.

    如果你看看SICP视频讲座,你会发现Abelson和Sussman确实有学生对此感到困惑,所以最好只使用其中一个,因为匿名程序是你需要触摸的东西,这显然是你想教的带有显式lambda而不是语法糖的形式.

    2023-02-07 15:51 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有