从 Scheme 的顶层使用自定义库 (Racket 6.3)
Using custom libraries from top level in Scheme (Racket 6.3)
按照 http://www.scheme.com/csug8/libraries.html 中的说明,我可以构建一个库 smcho.ss
。
(library (smcho simple (1))
(export hello factorial)
(import (rnrs (6)))
(define (hello x)
(+ x 10))
(define (factorial n)
(cond
[(<= n 0) 1]
[else (* n (factorial (- n 1)))]))
)
然后,使用 plt-r6rs --install smcho.ss
(http://lists.racket-lang.org/users/archive/2009-September/035465.html) 安装它。
但是,当我尝试在 top_level.ss 中使用它时,
(import (smcho simple) (rnrs (6)))
(print (factorial 10))
我有错误消息
scheme> plt-r6rs top_level.sc
get-module-code: no such file: #<path:/Users/smcho/Desktop/scheme_lib/top_level.sc>
context...:
可能出了什么问题?
我检查了 ~/Library/Racket/6.3/collects
目录存储正确编译的库,所以问题不应该来自库。
问题是我应该使用 (display (factorial 10))
而不是 print
。此外,在 DrRacket GUI 中,我需要在其中添加 #lang r6rs
到 运行。
我不确定为什么 display
可以,而 print
或 pr
会导致问题。
按照 http://www.scheme.com/csug8/libraries.html 中的说明,我可以构建一个库 smcho.ss
。
(library (smcho simple (1))
(export hello factorial)
(import (rnrs (6)))
(define (hello x)
(+ x 10))
(define (factorial n)
(cond
[(<= n 0) 1]
[else (* n (factorial (- n 1)))]))
)
然后,使用 plt-r6rs --install smcho.ss
(http://lists.racket-lang.org/users/archive/2009-September/035465.html) 安装它。
但是,当我尝试在 top_level.ss 中使用它时,
(import (smcho simple) (rnrs (6)))
(print (factorial 10))
我有错误消息
scheme> plt-r6rs top_level.sc
get-module-code: no such file: #<path:/Users/smcho/Desktop/scheme_lib/top_level.sc>
context...:
可能出了什么问题?
我检查了 ~/Library/Racket/6.3/collects
目录存储正确编译的库,所以问题不应该来自库。
问题是我应该使用 (display (factorial 10))
而不是 print
。此外,在 DrRacket GUI 中,我需要在其中添加 #lang r6rs
到 运行。
我不确定为什么 display
可以,而 print
或 pr
会导致问题。