For Development HEAD DRAFTSearch (procedure/syntax/module):

11.55 srfi.219 - 高階lambdaの定義

Module: srfi.219

この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がインポートされます。 ポータブルなコードに必要なのは前者だからです。



For Development HEAD DRAFTSearch (procedure/syntax/module):
DRAFT