lisp 語法及變數皆不分大小寫(case insensitive)。
NIL
空串列,相當於 '() 。另外真偽值表示時, T 表真, NIL 表偽。只要是任何不是 NIL (空串列) 的值,真偽值都表示真。
QUOTE
複製內容到剪貼板
代碼:
(QUOTE 參數)
將參數直接傳回,不做任何評估動作。可用 ' (單引號)取代
SETQ, SETF, LET
複製內容到剪貼板
代碼:
(SETQ 參數1 參數2)
(SETF 參數1 參數2)
(LET ((變數1名稱 變數1的值)
(變數2名稱 變數2的值)
........
)
變數1,2...的作用範圍,既程式執行敘述
)
SETQ, SETF 將參數1的值連結至參數2。 LET 只有在作用範圍內有效。
註: SetQ => set quote; SetF => set form
註: 全域變數習慣用兩個 * 把變數名稱包起來,例如 *globe-variable*
CAR, CDR
複製內容到剪貼板
代碼:
(CAR 串列參數)
(CDR 串列參數)
CAR 取得參數串列的第一個元素;CDR 取得扣掉第一個元素之後的新串列。
CONS
複製內容到剪貼板
代碼:
(CONS 參數1 參數串列2)
把參數1 加到參數串列2 的第一個元素,產生出新的串列。
對任一串列 A 而言, (CONS (CAR A) (CDR A)) 即為 A 。
註:如果第二個參數不是串列,則會產生出點對,故少用。
APPEND
複製內容到剪貼板
代碼:
(APPEND 參數串列1 參數串列2 ........ )
合併若干參數串列,形成新的串列。
註:如果最後一個參數不是串列,也會形成尾巴是帶點的串列,故少用。
LIST
複製內容到剪貼板
代碼:
(LIST 參數1 ........ )
將若干參數,當作是新串列的元素,形成新串列。
註: APPEND 除了最後一個之外的參數皆需為串列,而 LIST 不用。
NULL
複製內容到剪貼板
代碼:
(NULL 參數)
判斷參數是否為空串列(NIL)。
ATOM, LISTP, NUMBERP, ZEROP
複製內容到剪貼板
代碼:
(ATOM 參數)
(LISTP 參數)
(NUMBERP 參數)
(ZEROP 參數)
判斷參數是否為 atom(原子), list(串列), number(數字), zero(0) , ZEROP 的參數必須為數字。
LENGTH
複製內容到剪貼板
代碼:
(LENGTH 參數串列)
計算參數串列內的元素有幾個。
REVERSE
複製內容到剪貼板
代碼:
(REVERSE 參數串列)
將參數串列內的元素順序反過來,切記,它只會反轉第一層的元素。
EQUAL
複製內容到剪貼板
代碼:
(EQUAL 參數1 參數2)
比較兩參數是否相等。
=, >, <, >=, <=
複製內容到剪貼板
代碼:
(= 參數1 參數2)
(> 參數1 參數2)
(< 參數1 參數2)
(>= 參數1 參數2)
(<= 參數1 參數2)
功用正如你所想,傳回值是 T 或是 NIL 。
NOT, AND, OR
複製內容到剪貼板
代碼:
(NOT 參數)
(AND 參數1 參數2 ...... )
(OR 參數1 參數2 ...... )
功用正如你所想。AND 由左至右搜尋是否有 NIL ,碰到第一個滿足的元素時,就停止搜尋,然後傳回 NIL ,不然等搜尋到最後一個之後,最後一個參數就會被傳回來啦。同理, OR 會搜尋第一個非 NIL 的元素,然後就停止搜尋,把那個元素當做傳回值啦。
(to be continued... )