2009-07-12 7 views
2

나는이 일을 시도 :PLT Scheme에서 모듈을 만드는 방법은 무엇입니까?

#lang scheme 
(module duck scheme/base 
     (provide num-eggs quack) 
     (define num-eggs 2) 
     (define (quack n) 
     (unless (zero? n) 
      (printf "quack\n") 
      (quack (sub1 n))))) 

을하지만이 오류 얻을 :

module: illegal use (not at top-level) in: 
(module duck scheme/base (provide num-eggs quack) (define num-eggs 2) (define (quack n) (unless (zero? n) (printf "quack\n") (quack (sub1 n))))) 

올바른 방법은 무엇입니까?

답변

3

(module duck scheme/base 줄 (및 닫는 괄호)을 제거해야합니다.

코드를 #lang scheme으로 시작하면 코드가 scheme 언어를 사용하는 모듈에 효과적으로 추가됩니다. 작은 언어를 대신 사용하려면 #lang scheme/base을 사용할 수도 있습니다.

은 (그리고 BTW, 당신의 질문의 제목은 나쁜 - :

은 (#lang를 사용하는 일부 소스 파일을 통해

(parameterize ([read-accept-reader #t]) 
    (call-with-input-file "some file" read)) 

당신이 무엇을 얻을 참조 정말 확신을 얻으려면, 이렇게.) - 다른 구현과 관련이 없으므로 "PLT Scheme"이어야합니다.