srfi.219
- 高階lambdaの定義 ¶このsrfiは、関数を返す関数を簡単に定義できるようにdefine
を拡張します。
次のように動作します。
(define ((f a b) c d) ...) ≡ (define (f a b) (lambda (c d) ...)) ≡ (define f (lambda (a b) (lambda (c d) ...))) (define (((f a) b) c) ...) ≡ (define ((f a) b) (lambda (c) ...)) ≡ (define (f a) (lambda (b) (lambda (c) ...))) ≡ (define f (lambda (a) (lambda (b) (lambda (c) ...))))
この機能は伝統的に多くの実装でサポートされており、Gaucheも例外ではありません。
従ってsrfi.193
を使わないでもこの機能を使うことはできます。
ポータブルなコードを書く必要がある場合にこのモジュールを使うと良いでしょう。
Gaucheはふたつのdefine
を持っています。
R7RSで定義されているとおりの「素の」define
と、
拡張ラムダ引数をサポートしている「拡張」define
です。
srfi.193
をインポートすると前者のdefine
がインポートされます。
ポータブルなコードに必要なのは前者だからです。