clisp文法簡易リファレンス
作業中。
参考
「Land of lisp」を読んだのでCommon Lispのまとめ - rbtnn雑記
基本的な記法
コメント
; Hello
シンボル
'hello
数値
1 2.0
文字列
"hello world"
\" エスケープ
"welcome to \"Land of Lisp\" "
コードモード リストの先頭の要素をコマンドとして評価する
(print "hello")
データモード リストの先頭の要素をコマンドとして評価しない
'(1 2 3 4 5)
定義
defparameter グローバル変数の定義
(defparameter *foo* 5)
defvar グローバル定数の定義
(defvar *FOO* 5)
defun グローバル関数の定義
(defun sum (a b)
(+ a b))
let ローカル変数の定義
(let ((a 2)
(b 3)
(* a b))
flet ローカル関数の定義 (関数定義で、別の関数を呼べない)
(flet ((f (a b)
(+ a b))
(g (a b))
(* a b)))
(f 2 3)
(g 2 3))
labels ローカル関数の定義 (関数定義で、別の関数を呼べる)
(flet ((a (n)
(* n 10))
(b (n))
(- (a n) 3)))
(a 3)
(b 3))
代入
setf 変数に代入
(setf *foo* 100)
算術計算
+ 足し算
(+ 2 3) > 5
* 掛け算
(* 2 3) > 6
1+ 引数から1を足す
(1+ *foo*)
1- 引数から1を引く
(1- *foo*)
前置演算子として使う
ash 算術シフト、値を半分にして小数点以下を捨てる。第2引数が-1だと右シフト
(ash 5 -1) > 2
リスト操作
cons 2つの要素をコンスセルにする
(cons 'foo 'bar) > (foo . bar)
car リストの先頭の要素を取り出す
(car '(pork beef fish)) > pork
cdr リストの先頭以降の要素を取り出す
(car '(pork beef fish)) > (beef fish)
list リストを作成する
(list 'pork 'beef 'fish) > (pork beef fish)