区分Lisp中的字符和整数

时间:2014-01-05 19:49:45

标签: char int lisp

我在Lisp中有一个列表,我正在整理,我想创建一个if语句来检查列表中的当前对象是字符还是整数。

是否有类似的东西:

(if (EQUAL currentObject char)
...)

(if (EQUAL currentObject integer)
...)

我可以使用??

非常感谢。

1 个答案:

答案 0 :(得分:3)

有多种方法可以确定您手头有哪种物体。

(typep EXPR 'character) ;; ==> True, if EXPR evaluates to a character
(characterp EXPR)       ;; ==> ------------ " -----------------------
(typep EXPR 'integer)   ;; ==> True, if EXPR evaluates to an integer
(integerp EXPR)         ;; ==> ------------ " -----------------------

查看typeptypecasecharacterp的定义,...

(loop
   for element in list
   do (typecase element
        (integer #| element is an integer number ... |#)
        (character #| element is a character object ... |#)
        (t #| element is something not covered above |#)))

对于许多内置类型,有可用的谓词函数,可用于测试特定值是否是该类型的实例。通常,这些谓词以其基类型的名称命名,附加“p”(“stringp”,“symbolp”,“numberp”,“consp”,...)