Common Lisp笔记-2.数字表达与算术运算
Lisp是历史第二悠久的高级语言,仅次于Fortran,可以把它看做解释性语言,因为可以在命令行下直接输入命令,然后得到结果,这个过程被称为REPL(Read-Eval-Print Loop)。比如最简单的数字表达:(再次说明下Lisp用分号;表示注释,这里我用$表示命令提示符)
10
$ 20/2 ;可约整数之比
10
$ #b10010 ;二进制用 #b为前缀
18
$ #o76 ;八进制以 #o为前缀
62
$ #xABCD ;十六进制
43981
$ 2/3 ;俩整数若不能整除,则表示为分数
2/3
$ 3/2 ;即使能写成有限小数也表示为分数,意味着Lisp可以精确地表达有理数
3/2
$ #c(2 1) ;Lisp用#c前缀来表示复数,不多说了
#C(2 1)
再看一些算术运算的例子:
24
$ (- 10 2 3) ; 第一个是被减数,其他都是减数
5
$ (* 2 3 4) ;规则同加法
24
$ (/ 3 2 2) ;除法规则同减法
3/4
$ (+ 8) ;注意,只有一个操作数,此时加法默认另外一个操作数为加法群的单位元 0
8
$ (+) ;所以没有操作数的时候,就是单位元
0
$ (* 8) ;乘法群单位元为1
8
$ (*) ; 应该可以猜到
1
$ (- 2) ;默认被减数是0
-2
$ (/ 2) ;默认被除数是 1, 注意(-) 和(/)这种误操作数的减法和除法语法错误,会报错。
1/2
再看一些比较运算:
= 用来表示相等,如果参数都相等则返回T,否则返回nil
(= 1 1) ==> T
(= 10 20/2) ==> T
(= 1 1.0 #c(1.0 0.0) #c(1 0)) ==> T
不等于用/= 来表示
(/= 1 1) ==> NIL
(/= 1 2) ==> T
(/= 1 2 3) ==> T
(/= 1 2 3 1) ==> NIL
(/= 1 2 3 1.0) ==> NIL
小于大于不大于不小于分别用 <, >, <=, and >= 表示,类似这些比较也可以有多个参数,每个参数与右边的参数比。
(< 2 3) ==> T
(> 2 3) ==> NIL
(> 3 2) ==> T
(< 2 3 4) ==> T
(< 2 3 3) ==> NIL
(<= 2 3 3) ==> T
(<= 2 3 3 4) ==> T
(<= 2 3 4 3) ==> NIL
另外还有取最大最小值的max和min函数
(max 10 11) ==> 11
(min -12 -10) ==> -12
(max -1 2 -3) ==> 2
最新评论