(defun 関数名 (仮引数 ...仮引数) 式 ... 式)という形になります.関数定義は,関数名を先頭にもつフォームによって 呼び出すことができます. シンボルには変数としての値と,関数 定義の両方を持たせることができます.そのシンボルが変数としてよく使われ るものであっても関数名としても用いてもよくなっています. 関数のフォームがEVALされる時には,関数フォームへの実引数が順に評価され ます.そして,その値が順に仮引数に渡され,その仮引数の環境のもとで,式 が順に評価され,最後の式の値がこの関数評価の結果となります. この仮引数に利用される変数名は,この関数本体の中だけで利用できるもので, スコープ(scope)がこの本体であるというようにいわれます. この仮引数の変数のように,スコープが限定されている変数を局所変数(local variable)といい,そうでない変数は大域変数(global variagle)といいます.
<cl> (defun test (a) a) test <cl> (test 1) 1 <cl> (defun fib (n) (if (< n 2) 1 (+ (fib (1- n)) (fib (- n 2))))) <cl> (fib 19) 6765 <cl> (time (fib 19)) cpu time (non-gc) 13134 msec user, 617 msec system cpu time (gc) 483 msec user, 0 msec system cpu time (total) 13617 msec user, 617 msec system real time 14453 msec 6765