如何在另一个可以在球拍中全局访问的函数中定义一个函数?
答案 0 :(得分:1)
我所知道的唯一简单方法是在顶层定义一个绑定,以后可以在函数内修改:
Welcome to Racket v6.2.1.
-> (define gf add1)
-> (define (redefine-gf) (set! gf sub1))
-> (gf 1)
2
-> (redefine-gf)
-> (gf 1)
0
答案 1 :(得分:0)
如何在另一个可以在球拍中全局访问的函数中定义一个函数?
在函数g
中定义函数f
时,您的意思应该是全局可访问的?在g
的情况下,努力是奇怪的。但是如果你只是想问一下如何在g
内正式定义一个只能通过调用f
间接调用的辅助函数f
,那么它将如下所示:
(define (f n)
(define (g n)
n)
(g n))
这显然只输出输入。但是,您无法通过g
之外的名称来呼叫f
。你可以在一个封闭的函数体中拥有任意数量的定义,只要它不是这个外部函数中的最后一个语句。
无论如何,您可能希望看一看: Racket Guide