一、LISP—谓词
谓词的作用是做一些条件判断,从而筛选出需要的结果(比如一组数中选出偶数)。
| 谓词 | 描述 |
|---|---|
| atom | 它接受一个参数,并返回t如果参数是一个原子或,否则nil。 |
| equal | 它有两个参数,并返回t,如果他们在结构上相同或否则nil |
| eq | 它有两个参数,并返回t,如果它们是相同的相同的对象,共享相同的内存位置或否则nil |
| eql | 它有两个参数,并返回t如果参数相等,或者如果他们是同一类型具有相同值的数字,或者如果他们是代表相同的字符的字符对象,否则返回nil |
| evenp | 它接受一个数字参数,并返回t如果参数为偶数或否则为nil。 |
| oddp | 它接受一个数字参数,并返回t如果参数为奇数或否则为nil。 |
| zerop | 它接受一个数字参数,并返回t如果参数是零或否则为nil。 |
| null | 它接受一个参数,并返回t,如果参数的计算结果为nil,否则返回nil。 |
| listp | 它接受一个参数,并返回t如果参数的计算结果为一个列表,否则返回nil。 |
| greaterp | 这需要一个或多个参数,并返回t,如果不是有一个单一的参数或参数是从左到右,或如果无先后,否则为nil。 |
| lessp | 这需要一个或多个参数,并返回t,如果不是有一个单一的参数或参数是从左到右依次更小的向右,或否则为nil. |
| numberp | 它接受一个参数,并返回t如果参数是一个数字,否则为nil。 |
| symbolp | 它接受一个参数,并返回t如果参数是一个符号,否则返回nil。 |
| integerp | 它接受一个参数,并返回t如果参数是一个整数,否则返回nil。 |
| rationalp | 它接受一个参数,并返回t如果参数是有理数,无论是比例或数量,否则返回nil>。 |
| floatp | 它接受一个参数,并返回t当参数则返回一个浮点数否则为nil。 |
| realp | 它接受一个参数,并返回t如果参数是一个实数,否则返回nil。 |
| complexp | 它接受一个参数,并返回t如果参数是一个复数,否则返回nil。 |
| characterp | 它接受一个参数,并返回t如果参数是一个字符,否则返回nil。 |
| stringp | 它接受一个参数,并返回t,如果参数是一个字符串对象,否则返回nil。 |
| arrayp | 它接受一个参数,并返回t如果参数是一个数组对象,否则返回nil。 |
| packagep | 它接受一个参数,并返回t,如果参数是一个包,否则返回nil。 |
;逐一对谓词的测试
(write (atom 'abcd))
(terpri)
(write (equal 'a 'b))
(terpri)
(write (evenp 10))
(terpri)
(write (evenp 7 ))
(terpri)
(write (oddp 7 ))
(terpri)
(write (zerop 0.0000000001))
(terpri)
(write (eq 3 3.0 ))
(terpri)
(write (equal 3 3.0 ))
(terpri)
(write (null nil ))
;递归实现的阶乘
(defun factorial(n)
(cond ((zerop n) 1)
(t (* n (factorial(- n 1))));这里的t可有可无,在这里的意义就是此句一定执行,但没有t,依照函数返回最后一个表达式的值,结果依然可以得出。
)
)
(setq n 8)
(format t "factorial ~d is : ~d " n (factorial n))
二、LISP—数字
这没什么好说的,就是一些数学运算。
| Data type | 描述 |
|---|---|
| fixnum | 这个数据类型表示的整数哪些不是太大,大多在范围-215到215-1(它是依赖于机器) |
| bignum | 这些都是非常大的数字有大小受限于内存中分配LISP量,它们不是长整数数字。 |
| ratio | 表示两个数中的分子/分母形式的比率。在/函数总是产生结果的比率,当其参数都是整数。 |

本文介绍了LISP中的谓词用于条件判断,字符作为一种数据对象表示,并探讨了LISP数组的多样功能,包括make-array函数及其参数。
最低0.47元/天 解锁文章
324

被折叠的 条评论
为什么被折叠?



