例如,查看以下代码(来自tspl4):
(define proc1 (lambda (x y) (proc2 y x)))
如果我在scheme中运行这个程序。。。
#!r6rs (import (rnrs)) (define proc1 (lambda (x y) (proc2 y x)))
我得到这个错误:
expand: unbound identifier in module in: proc2
#!r6rs (import (rnrs)) (define proc2 +) (define proc1 (lambda (x y) (proc2 y x))) (display (proc1 2 3)) ;output: 5
它们都必须在同一个模块中定义(r6rs行话中的“库”)。但是你可以按照你想要的任何顺序定义它们——例如,在你的最后一次剪贴中,你可以交换这两个定义,这样就可以很好地工作了。但请注意,不能将定义放在 display 这是一个使用 价值 ,因此如果将函数定义移到后面,则会出现运行时错误(请注意这是一个 错误,而不是编译时错误。)
display