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

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返回字符串的长度。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值