私の無知を許してください、しかし、これら2つの違いは何ですか:
(define blah)
(define* blah)
? 残念ながら、Google はアスタリスク文字を無視します。
SRFI 89は Gambit の作成者によって作成されたので、Gambitdefine*
がそのドキュメントの言うことを行っていると仮定するのは公正です。:-)
言い換えれば、それlambda*
はlambda
.
Gambitスキームの(かなり広範な)ドキュメントdefine*
には、特別な形式についての言及はありません。それは、あなたがそれを見たコードの一部にのみ見られる何らかの手順、定義、マクロ、または特別な形式である可能性があります。使用されているコードのソースを参照するリンクを投稿する必要がありますdefine*
。
質問のもう少しコンテキストがあればいいのですが。
*は、フォームが何か特別なことをすることを意味する場合があります。したがって、私の推測では、define *は通常のdefineとして機能しますが、同時に何か特別なことをします。このエクストラは、モジュールから名前を自動的にエクスポートする可能性があります。
この定義はRacketffi-libにあり、この原則を示しています。
(define-syntax define*
(syntax-rules ()
[(_ (name . args) body ...)
(begin (provide name) (define (name . args) body ...))]
[(_ name expr)
(begin (provide name) (define name expr))]))