リストのうち,第要素が特殊フォームを表す記号でもマクロ記号でもないものは, 関数呼び出しのフォームである. その第要素が関数を表わし,残りの要素が関数への実引数を表す.
(《関数式》《式》《式》)
関数呼び出しにあたっては,まず 《関数式》 が評価される. その値は関数データでなければならない.次に 《式》 《式》 が順に評価され, それらの値すべてが 《関数式》 の値である関数への実引数として渡されて 関数が呼び出される. 《式》 の値が第引数, 《式》 の値が第引数である. 関数呼び出し式の値は,呼び出された関数の返す値である.
例:
((car (cons + -)) 2 1) 3
((cdr (cons + -)) 2 1) 1
((lambda (x) ((if x car cdr) '(a . b))) #t) a
((lambda (x) ((if x car cdr) '(a . b))) #f) b
組み込み関数の引数の個数は関数ごとに規定されている. 例えば, consという組み込み関数の引数は個であり, listは任意個の引数を受け取れる. もし規定された以外の個数の実引数が渡された場合はエラーとなる. したがって,次の関数呼び出しはいずれもエラーである.
(cons) エラー
(cons 1 2 3) エラー
同様に,ユーザの定義する関数の引数の個数も関数ごとに規定される. 例えば
(lambda (x y z))
と定義された関数の引数は個であり,
(lambda (x y . z))
と定義された関数の引数は個以上である. ユーザの定義する関数の場合も組み込み関数と同じで, 規定された以外の個数の実引数が渡された場合はエラーとなる. 次の関数呼び出しはいずれもエラーである.
((lambda (x y z))) エラー
((lambda (x y z)) 1) エラー
((lambda (x y z)) 1 2) エラー
((lambda (x y z)) 1 2 3 4) エラー
((lambda (x y . z))) エラー
((lambda (x y . z)) 1) エラー