Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Syntax 口齿不清是什么意思_Syntax_Lisp_Common Lisp_Special Characters - Fatal编程技术网

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