2015-12-31 3 views
1

Следуя инструкциям в http://www.scheme.com/csug8/libraries.html, я мог бы построить библиотеку smcho.ss.Использование пользовательских библиотек с верхнего уровня в Схеме (Racket 6.3)

(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 хранит правильно скомпилированную библиотеку, поэтому проблема не должна быть из библиотеки.

ответ

0

Вопрос был в том, что я должен был использовать (display (factorial 10)) не print. Кроме того, в DrRacket GUI мне нужно было добавить #lang r6rs для запуска.

Я не уверен, почему display в порядке, когда print или pr вызывает проблему.

+2

Racket предоставляет функцию 'print', но R6RS этого не делает. Стандарт R6RS определяет только 'display'. –

Смежные вопросы