名前 | 引数 | 説明 | 例 |
---|---|---|---|
COND | (値 値)* (値 値)* ... | 引数の各リストを順次評価していく(リストは1つ以上必要) 引数のリストの先頭の値がNIL以外なら続く値を返す 引数のリストの先頭の値がNILなら次の引数のリストを評価する | (COND ('A 'B) ('T 'C)) ; B (COND ('NIL 'B) ('T 'C)) ; C |
LAMBDA | (シンボル* シンボル* ...)* 値* | ユーザ関数を設定する 第一引数のリスト内のシンボルはユーザ関数の仮引数となる 仮引数となるシンボルのリストは空でも可能 第二引数に実行する処理の値を渡す ユーザ関数への参照を返す | (LAMBDA (X Y) (CONS (CONS X X) (CONS (Y Y)))) (LAMBDA () 'A) |
LABEL(DEFINE) | シンボル* 値or参照 | 第一引数のシンボルに第二引数の値or参照を設定する(変数設定) 第一引数のシンボルにT NIL COND LAMBDA LABEL QUOTE CONS CAR CDR EQ ATOMは使用できない | (LABEL A 'B) (CONS A A) ; (B . B) (LABEL F (LAMBDA (X Y) (CONS X Y))) (F 'A 'B) ; (A . B) |
QUOTE | 値* | 引数を評価せず返す ' (シングルクオート)で略記できる | (QUOTE A) ; A 'A ; A (QUOTE (A B)) ; (A B) '(A B) ; (A B) |
名前 | 引数 | 説明 | 例 |
---|---|---|---|
CONS | 値 値 | 2つの引数でリストを作る | (CONS 'A '(B C)) ; (A B C) |
CAR | リスト | リストの先頭を取り出す | (CAR '(A B C)) ; A (CAR '()) ; () |
CDR | リスト | リストの後方を取り出す | (CDR '(A B C)) ; (B C) (CDR '()) ; () |
EQ | 値 値 | 2つの引数が同じシンボルならT それ以外はNIL | (EQ 'A 'A) ; T (EQ 'A 'B) ; NIL (EQ '(A . B) '(A . B)) ; NIL |
ATOM | 値 | 引数がシンボルならT それ以外はNIL | (ATOM 'A) ; T (ATOM '(A B)) ; NIL |