削除された内容 追加された内容
111 行
手続きはただ命令や数式の列をまとめる役目だけではありません。Schemeの豊富な機能は手続きを介して提供されているのです。また、あなたの書いたプログラムの機能を他のプログラムに公開するとき、それは手続きの定義をよって行われます。Schemeの機能を呼び出すとは、用意された手続きを呼び出す構文を書くことと同義です。
 
Schemeの手続きの呼び出しは「(手続き名 引数1 引数2 ……)」という構文です。手続き名は変数です。手続きがどんな引数を取るのかは手続きによって異なります。手続き名やそれぞれの引数の間はひとつ以上の[[w:空白文字]]で区切らなければなりません。手続き名や引数の間に空白文字がないと、区切りが分からなくなってしまうからです。空白文字とは[[w:改行]][[w:タブ文字]][[w:半角スペース]]の3つのいずれかです。コンソールから改行を入力すると処理系は評価を開始してしますが、閉じていない括弧があるときなどはまだ入力が途中だと判断され評価は行われません。この構文はどんな手続きでも同じです。Schemeのほとんどの手続きは、その引数が評価されてから手続きに渡されます。
 
手続き呼び出しの丸括弧は数学の優先順位を示す括弧とは異なり、省略できません。このため、数学のような乗算が加算に優先する、といった優先順位はSchemeには存在しません。この仕様は記号の優先順位を覚える必要がない反面、数式を煩雑にしがちで、Schemeらしい点でもあります。手続きの呼び出しが何重にもなると括弧の数を間違いやすいです。括弧は「(」と「)」がきちんと対になっていなければなりませんから気をつけましょう。SchemeのようなLisp系の言語は括弧だらけになるから苦手、という人も少なくないです。