Syntax 口齿不清是什么意思
例如,Syntax 口齿不清是什么意思,syntax,lisp,common-lisp,special-characters,Syntax,Lisp,Common Lisp,Special Characters,例如,#'functionname,是否有必要?#'functionname在公共Lisp中 公共Lisp和其他一些Lisp方言有多个名称空间。这里的函数和值是不同的。要获取名称的函数值,我们需要编写: (function functionname) 由于写起来有点长,所以有一个较短的符号: #'functionname 要显示效果,请参见以下内容: (let ((foo 42)) (flet ((foo () 'bar)) (list foo (function foo) #'
#'functionname
,是否有必要?#'functionname在公共Lisp中
公共Lisp和其他一些Lisp方言有多个名称空间。这里的函数和值是不同的。要获取名称的函数值,我们需要编写:
(function functionname)
由于写起来有点长,所以有一个较短的符号:
#'functionname
要显示效果,请参见以下内容:
(let ((foo 42))
(flet ((foo () 'bar))
(list foo (function foo) #'foo (foo))))
上面定义了一个局部变量FOO
和一个局部函数FOO
。
list语句返回FOO
的值,然后使用(function…
符号返回FOO
的函数值,然后使用简写符号返回相同的值,然后返回实际调用函数FOO
的值
(函数foo)
和#foo
是相同的概念,但编写方式不同。两者都引用名为FOO
的本地词法函数FOO
是由FLET
表单作为本地函数引入的
Lisp REPL返回如下内容:
(42 #<function FOO 4060008224> #<function FOO 4060008224> BAR)
还有更多#
是所谓的分派宏字符
ANSI Common Lisp HyperSpec在中描述了
字符
Common Lisp可以对向量使用不同的语法。说[1 2 3]
。它还可以对复数使用不同的语法。类似于{12}
。但事实并非如此。为什么?原因是Common Lisp试图节约语言中的字符使用,并将[
,]
,{
和}
等字符留给用户进行自己的语法扩展。通常,Lisp用户开发嵌入式语言,为了使之更容易,公共Lisp标准试图将字符使用量降至最低,并提供宏字符和分派宏字符的机制
为了减少字符使用量,使用单个分派字符#
,然后下一个字符确定可以表示的内容<代码>#b用于二进制数<代码>#x用于十六进制数字<代码>#c用于复数#(
表示向量。#'
表示函数名。还有更多
由于Common Lisp是一种可编程编程语言,用户可以更改此字符级语法。请参阅函数。您提供了一篇优秀的文章!我正好在需要时找到了它!
#'functionname -> (function functionname)
#(1 2 3) -> the vector of the elements 1 2 3
#c(1 2) -> a complex number
#xFFFF -> a hex number
#b1111 -> a binary number