この式は評価されると手続きを生成します。この式が評価された時点の環境が手続き中に保持されます。最後の式の値が返されます。^はlambdaの短い別名です。これはGauche独自の拡張です。省略可能引数やキーワード引数を簡単に指定できるようにしています。コードはより長く冗長になってしまいます。拡張構文を使った方が良いでしょう。以下のいずれかの形でなければなりません。手続きは決まった数の引数を取ります。実引数がそれぞれ対応するvariableに束縛されます。手続きは不定個の引数を取ります。実引数は新しいリストに集められて、そのリストがvariableに束縛されます。手続きは少なくともN個の引数を取ります。variable_Nに束縛されます。始まるextended-specが続きます。任意の組み合わせにより構成されます。...省略可能引数を指定します。各optspecは以下のいずれかの形式です。与えられなければinit-exprを評価した値に束縛されます。init-exprは対応する実引数が与えられなかった場合にのみ評価されます。init-exprの評価環境にはこのoptspecに先立つ仮引数が含まれます。エラーが通知されます。[variable]]キーワード引数を指定します。各keyspecは以下の形式のいずれかです。した値に束縛されます。与えられなければvariableは#<undef>に束縛されます。1)三番目の形式では、仮引数の名前とは別に引数を与えるキーワードを指定できます。与えられた場合にエラーを通知します。この動作を抑制することができます。認識できなかったキーワード引数のリストがvariableに束縛されます。省略可能引数が束縛された後の実引数リストから探されます。variable残余引数を指定します。リストがvariableに束縛されます。両者はともに、必須引数と省略可能引数が処理された後の実引数リストを処理の対象とします。let-keywords*を参照してください。...)の短縮表記です。cには#[_a-z]に含まれる任意の一文字が使えます。手続きを簡潔に書ける便利なマクロです。いわゆる部分適用を実現するために使えます。各expr-or-slotは式またはシンボル<>でなければなりません。最後のexpr-or-slotはシンボル<...>であっても構いません。lambdaフォームに展開されます。そのフォームのボディには次の式が置かれます。...)但し、各<>は対応する仮引数に置き換えられます。expr-or-slotを呼び出すのに使われます(下の4番目の例を参照のこと)。フォームが手続きを作る前に評価される点が異なります。x2)))Gaucheには他にも二つほど、部分適用を簡潔に書く方法があります。(コンビネータ参照)。...関数適用をチェインするマクロです。(意味は異なりますが)。関数の最後の引数の区切りとなります。...))$はチェインすることができます。「残りの引数全部」を示します。式全体が「残りの引数(リスト)」を受け取ることを期待する手続きとなります。<...>))関数的にコードを書いていると、関数呼び出しが深くネストすることが多くなります。Schemeの構文はそのようなネストとあまり相性が良くありません。コードが右のカラムにどんどん伸びていってしまいます。次の同等な二つの式を比べてみてください。