初识LISP(3)——谓词、字符及数组

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

一、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 表示两个数中的分子/分母形式的比率。在/函数总是产生结果的比率,当其参数都是整数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值