2014-01-05 94 views
0

我在Lisp中有一個我正在排序的列表,並且我想創建一個if語句來檢查列表中的當前對象是字符還是整數。區分Lisp中的字符和整數

有什麼樣:

(if (EQUAL currentObject char) 
...) 

或者

(if (EQUAL currentObject integer) 
...) 

,我可以使用?

非常感謝。

+1

爲什麼不使用手冊來解決這些問題?打印這一個:http://clqr.boundp.org或者在線使用這一個:http://www.lispworks.com/documentation/HyperSpec/Front/Contents.htm –

回答

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」,...)