gpt4 book ai didi

racket - add 1 和 sub 1 的用例是什么?

转载 作者:行者123 更新时间:2023-12-04 18:57:39 24 4
gpt4 key购买 nike

在 Racket 中,有两个 Generic Number 程序,名为 add1 sub1 ,相当于 (curry + 1)(curryr - 1)分别。

这些程序是用于文体用途还是具有某种优化优势?这些程序背后的历史是什么?

最佳答案

历史?

我们需要回到 1986 年,当时讨论了修订后的计划修订报告。

丹·弗里德曼写道:

When describing arithmetic I find the symbols "1+" and "-1+" very harmful. The function + is denoted by the symbol "+" and this confuses people who are trying to understand the primitive recursive definition of +. Purely for pedagogical reasons I would like to see "add1" and "sub1" be optional. I know that macscheme & PC-Scheme have included them. I don't like multiple names for the same construct, but we have a few instances already in the report.



在此处查看更多信息:

https://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1986/msg00246.html
https://groups.csail.mit.edu/mac/ftpdir/scheme-mail/HTML/rrrs-1986/msg00251.html

原来名字 add1没有使其成为最小标准,但一些(非最小)实现包含它(例如 Chez Scheme)。

根据 Practical Scheme[1],Chez Scheme、Racket 和 Chicken Scheme 的实现包括 add1作为标准。我相信还有其他实现:

[1] http://practical-scheme.net/wiliki/schemexref.cgi?add1

至于它的用途:更方便(也更容易阅读)
(map add1 xs)


(map (lambda (x) (+ x 1)) xs)

这些天应该没有性能差异(但不要采取
我的话 - 做一个基准)。曾几何时,一个简单的编译器可能会
为第一个表达式生成更好的代码。一个体面的编译器应该产生
两个表达式的输出相同。

关于racket - add 1 和 sub 1 的用例是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48435498/

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