gpt4 book ai didi

lisp代码摘录

转载 作者:太空宇宙 更新时间:2023-11-03 18:44:28 24 4
gpt4 key购买 nike

我一直在阅读一些 lisp 代码并浏览了这一部分,但不太了解它的具体作用,尽管整个函数应该计算 -z 中的字母在输入的文本中出现的次数。

(do ((i #.(char-code #\a) (1+ i)))
((> i #.(char-code #\z)))

任何人都可以逐步解释发生了什么吗?我知道它以某种方式计算字母,但不太确定如何计算。

最佳答案

这段 Lisp 代码有点不寻常,因为它使用了读取时求值。 #.expr 表示表达式将在读取期间仅计算一次。

在这种情况下,聪明的编译器可能已经猜到给定字符的字符代码是已知的,并且可以从 DO 循环中移除字符代码的计算。该代码的作者选择通过在编译器看到它之前评估表达式来做到这一点。

来源看起来像这样:

(do ((i #.(char-code #\a) (1+ i)))
((> i #.(char-code #\z)))
...)

当 Lisp 读入 s 表达式时,我们得到这个新代码作为结果(假设字符的常规编码):

(do ((i 97 (1+ i)))
((> i 122))
...)

这是一个循环,它计算变量 i 从 97 到 122。

关于lisp代码摘录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8307228/

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