从 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 可以,而 printpr 会导致问题。