在Scheme(Racket 6.3)中使用顶级自定义库

时间:2015-12-31 18:06:56

标签: scheme racket

按照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.sshttp://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目录存储了正确编译的库,所以问题不应该来自库。

1 个答案:

答案 0 :(得分:0)

问题在于我应该使用(display (factorial 10))而不是print。此外,在DrRacket GUI中,我需要添加#lang r6rs来运行它。

displayprint导致问题时,我不确定为什么pr没问题。