살아가는 이야기

Moving from PLT Scheme to Dr Racket 본문

컴퓨터, 풀어그림

Moving from PLT Scheme to Dr Racket

우균 2011. 3. 26. 10:19

PLT Scheme에서 잘 되던 코드가 Racket에서는 동작하지 않는 경우가 있었다. 특히 모듈 시스템이 바뀌었는데, 다음과 같은 메시지가 나오거나

reference to undefined identifier: require

다음과 같은 메시지가 나오는 경우가 있다.

#%module-begin: illegal use (not a module body)

그럴 때
(1) 다음과 같이 이전 PLT Scheme 코드를 바꿔주고
(2) PLT Scheme의 언어를 "소스에 정의된 언어 사용"으로 설정해 주면
제대로 동작한다.

  • atom.scm: 모듈 정의 파일(the file defining a module)
#lang scheme        ; added
;(module atom        ; module name
; mzscheme           ; initial bindings for the module body
  ;
  ; the module body
  ;
  (provide atom?)   
  (define atom?
    (lambda (x)
      (and (not (pair? x)) (not (null? x)))))
;)
  • use.scm: 모듈 사용 파일(the file using the module)
#lang scheme        ; added
; for using atom?
(require (file "atom.scm"))
...


For English Users:
When you encounter one of the following error messages, try the above modification in courier font (the added part is in blue and the removed in red). Don't forget to select the language "defined as in the source." This is tested for DrRacket ver. 5.1.

1) reference to undefined identifier: require
2) #%module-begin: illegal use (not a module body)
 

Comments