原谅我的无知,但这两者之间的区别是什么:
(define blah)
(define* blah)
?不幸的是,Google忽略了星号字符。
答案 0 :(得分:1)
SRFI 89是由Gambit的作者撰写的,所以假设Gambit的define*
执行该文件所说的是公平的。 : - )
换句话说,它是lambda*
上的句法糖(如SRFI 89中所述)而不是lambda
。
答案 1 :(得分:0)
在Gambit计划的(相当广泛的)documentation中,没有提到define*
特殊形式;它可能只是在您看到的代码段中找到的某些过程,定义,宏或特殊形式。您应该发布引用正在使用define*
的代码源的链接。
答案 2 :(得分:0)
这个问题的更多背景会很好。
有时*只意味着表单会做额外的事情。 我的猜测是因为define *可以作为普通的定义, 但同时做了一些额外的事情。这个额外可以 从模块中自动导出名称。
这个定义是在Racket 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))]))