defun は関数を定義する。全ての引数は評価されない。
第一引数 vfname は定義される関数の名前をしめす。次に現れるのは引数リス トである。最後はその関数の本体が現れる。
例えば与えられた数の二乗の数を返す関数 square は以下のように定義する。
(defun square (x) (* x x))
ここで、 square が定義される関数の名前、 (x)が引数リストを表 す。この場合、関数 squareは唯一の引数 xを持つ。
(* x x) はこの関数の本体であり、引数 x自身を掛け合わせた値 を戻り値とする。
この定義を行った後、canlisp インタプリタでこの関数の呼出を行うと以下の ようになる。
-> (square 2) 4 -> (square 5) 25