您的位置:首页 > 理论基础 > 数据结构算法

Common Lisp学习之四:简单数据结构及处理

2013-12-29 22:21 183 查看
1 字面数值
在CL中,给定类型的数字可以有多种不同的字面表示方式,这些不同的形式将被读取器转化成相同的对象表示。例如10,20/2等都表示10。有理数在读取后都被规范化,分数被化简;

整数语法:[+/-]123456
比值语法:[+/-]1/4.2

整数数值可以以特定的进制进行解释
#b 二进制 #0 八进制 #x 十六进制 #36 三十六进制-数字集合从0-9 A-Z中取值

CL定义了四种浮点数类型:短型、单精度、双精度、长型,其精度和表示范围依次递增

复数以#C开始加两个数字的列表,分别表示实部和虚部;如果虚部为0,则LISP会简化为实数。

2 数学函数
2.1 算术运算
多元运算符:+ - * /
单元运算符:+ - * /
如果参数都是相同类型的数(有理数、浮点数或复数),则结果也是同类型的。浮点和复数是有传播性的,如果实参中存在复数,则其他数会被转化为浮点数参加运算。复数也是如此。
2.2 截断
floor 向负无穷截断
celling 向正无穷截断
round 进行舍入操作,如果值在中间,则向偶数接近
truncate向0截断
mod 取模
rem 取余数
1+ 返回+1
1- 返回-1
2.3 数值比较
= 用数学意义的值来比较数字,而忽略类型的区别。EQL会考虑类型。
/= 不等
< > <= >=检查实数的序列
以上这些函数都可以用超过两个参数来调用
min max用来取最值
zerop,minusp,plusp用于判定参数的符号特性
evenp,oddp 用于奇、偶判定

2.4 高等数学
log
exp
expt
sin/cos/tan
asin/acos/atan

3 字符
字符语法:#\后加字符,任何字符都可,例如" (

为了处理特殊字符,支持按命名如space newline tab page linefeed return和backspace

字符有其一套比较函数

数值相似符大小写敏感比较大小写无关比较
=char=char-equal
/=char/=char-not-equal
<char<char-lessp
>char>char-greaterp
<=char<=char-not-greaterp
>=char>=char-not-lessp
4 字符串
字符串是一维的向量,可以用向量的操作来访问。但其提供了自己的处理函数。
字符串写在闭合的双引号里,可以在字符串中包含任何字符集的支持字符,除了双引号和反斜线。当然,通过转义,也可包含这两个符号。

类似的,字符串也有自己的比较函数,这些函数只能比较两个字符串。其带有命名参数,可以指定两个字符串的子串来进行比较。
(string= "abc" "aaa" :start1 0 :end1 1 :start2 0 :end2 1)

数值相似符大小写敏感比较大小写无关比较
=string=string-equal
/=string/=string-not-equal
<string<string-lessp
>string>string-greaterp
<=string<=string-not-greaterp
>=string>=string-not-lessp
此外,length返回字符串的长度。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: