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> 
目录
相关文章
|
7月前
|
C#
C#学习相关系列之常用符号介绍
C#学习相关系列之常用符号介绍
|
6月前
|
C语言
C语言函数大全--c开头的函数之复数篇
【6月更文挑战第3天】本篇介绍 C语言中 c开头的函数之复数篇【C语言函数大全】
70 5
C语言函数大全--c开头的函数之复数篇
|
6月前
|
C语言
【C语言】:字符分类与转换函数
【C语言】:字符分类与转换函数
53 1
|
7月前
编译原理(1)----LL(1)文法(首符号集,后跟符号集,选择符号集)
编译原理(1)----LL(1)文法(首符号集,后跟符号集,选择符号集)
103 5
|
7月前
|
编译器 C语言
C语言2🔥:常量,输入与输出
C语言2🔥:常量,输入与输出
62 0
|
编译器 C语言 C++
C语言之变量的输入
C语言之变量的输入
318 0
|
存储 算法 编译器
【符号】 — C语言版
【符号】 — C语言版
116 0
【符号】 — C语言版
|
Linux C语言 Windows
C语言把字串转换大小写的函数
C语言把字串转换大小写的函数
169 0
mathjax符号
mathjax公式 \(\delta\): \delta \(\Delta\): \Delta \(\int\): \int \(\iint\): \iint \(\approx\): \approx \(\theta\): \theta \(\alpha\): \alp...
1178 0
|
算法
大O符号基础
大O符号(Big O notation), 又称渐进符号,是用于描述函数的渐近行为的数学符号。它是指用另一个(通常更简单的)函数来描述一个函数数量级的渐进上界。
2546 0