我对伊莱普很陌生,刚开始学我在文件中看到了以下表达式:
(1+ (buffer-size))
(+ 1 (buffer-size))
它们是什么意思我知道elisp使用前缀符号,所以第二个应该是正确的但这两种方法都可以在没有任何错误的情况下执行第一个来自
point-max
函数的文档。谢谢。
最佳答案
标记1+
是表示符号的标识符此符号具有作为函数的绑定,因此(1+ arg)
表示“调用1+
函数,其参数值为arg
”1+
函数返回1
及其参数值。
语法(+ 1 arg)
是实现这种效果的另一种方法在这里,函数由符号+
命名+
函数接收两个加在一起的参数。
在当今流行的许多主流编程语言中,标记化规则使得1+
和1 +
之间没有区别:这两种规则都表示后跟+
标记的数字常量Lisp标记化是不同的Lisp系列中的语言通常支持可以包含数字和非字母数字字符的标记我正在查看Emacs Lisp参考手册,没有看到关于read
函数用于将打印表示转换为对象的逻辑的部分通常,“Lispy”标记化行为是这样的:首先扫描标记,而不考虑它是基于作为有效标记组成部分的累积字符的什么类型的标记,在不是标记组成部分的字符处停止例如,当输入为abcde(f
时,将提取的标记为abcde
(
字符终止令牌(并保持在输入流中)然后,根据给定Lisp方言的规则,重新检查和分类生成的字符集abcde
,并根据其外观将其转换为对象在Lisp方言中,我们可以广泛地依赖于所有字母字符的标记来表示符号,以及所有数字(可能带有前导符号)的标记来表示整数1+
有一个尾随的+
,这是不同的!