lisp 符号和符号绑定

简介:

符号的含义

lisp中符号的类型是SYMBOL,一个符号就是这一类型的值.符号和整数其实差不多,只不过一个是数字表示的一个可以用字母表示.

* (type-of 'aaa)

SYMBOL
* 

相同的符号总是EQ的

* (eq 'a 'a)

T

符号绑定

一个符号可以同时绑定到变量 函数 类上,

CL-USER> (find "A" (map 'list #'symbol-name (loop for s being the symbol collect s)) :test #'string=)
NIL
CL-USER> (setf a "ddd")
; in: SETF A
;     (SETF A "ddd")
; ==>
;   (SETQ A "ddd")
; 
; caught WARNING:
;   undefined variable: A
; 
; compilation unit finished
;   Undefined variable:
;     A
;   caught 1 WARNING condition
"ddd"
CL-USER> (find "A" (map 'list #'symbol-name (loop for s being the symbol collect s)) :test #'string=)
"A"
CL-USER> (boundp 'a)
T
CL-USER> (defun a () ())
A
CL-USER> (fboundp 'a)
T
CL-USER> (defclass a () ())
#<STANDARD-CLASS COMMON-LISP-USER::A>
CL-USER> (find-class 'a)
#<STANDARD-CLASS COMMON-LISP-USER::A>

但结构和类不能绑定到同一个符号上

CL-USER> (defstruct a x y)
A
CL-USER> (defclass a () ())
; Evaluation aborted on #<SB-PCL::METAOBJECT-INITIALIZATION-VIOLATION "~@<Cannot ~S~@[ ~S~] objects into ~S metaobjects.~@:>" {1004D44943}>.
CL-USER> 
目录
相关文章
|
2月前
|
C#
C#学习相关系列之常用符号介绍
C#学习相关系列之常用符号介绍
|
4月前
|
Swift
在Swift编程语言中,有符号整数类型
在Swift编程语言中,有符号整数类型
23 2
|
9月前
|
C++
|
C语言
C语言, 比较任意两个整数值大小
C语言, 比较任意两个整数值大小
150 0
|
存储 索引 Python
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
105 0
【Python零基础入门篇 · 3】:掌握数值类型、进制的转换、字符串、占位符和格式化输入输出、标识符和保留字
mathjax符号
mathjax公式 \(\delta\): \delta \(\Delta\): \Delta \(\int\): \int \(\iint\): \iint \(\approx\): \approx \(\theta\): \theta \(\alpha\): \alp...
1133 0
|
算法
大O符号基础
大O符号(Big O notation), 又称渐进符号,是用于描述函数的渐近行为的数学符号。它是指用另一个(通常更简单的)函数来描述一个函数数量级的渐进上界。
2448 0