2012-05-24 21 views
1

原諒我的無知,但正是這兩者之間的區別:差限定和定義*

(define blah) 
(define* blah) 

?不幸的是Google忽略了星號字符。

+1

你能發表更詳細的工作代碼嗎?或者你在哪裏使用'define *'特殊形式找到代碼? –

回答

1

SRFI 89被寫了開局的作者,所以這是唯一公平的假設,開局的define*確實該文件說什麼。 :-)

換言之,它是lambda*以上的語法糖(如SRFI 89所述),而不是lambda

0

在Gambit計劃的(相當廣泛的)documentation中沒有提及define*特殊形式;它可能是一些程序,定義,宏或特殊形式,只在您看到它的代碼片段中找到。您應該發佈一個引用代碼來源的鏈接,其中define*正被使用。

0

多一點問題的上下文會很好。

有時*表示表單做了額外的事情。 因此,我的猜測是,定義*作爲普通定義, ,但同時做一些額外的事情。這個額外的可能會自動從模塊導出名稱。

這個定義在球拍FFI-lib的發現說明 這樣的原則:

(define-syntax define* 
    (syntax-rules() 
    [(_ (name . args) body ...) 
    (begin (provide name) (define (name . args) body ...))] 
    [(_ name expr) 
    (begin (provide name) (define name expr))]))