- # 2008/11/26(Wed) : [Scheme] [R6RS] import で束縛名を衝突させると
- ↓のように簡単な二つのライブラリを作成する。
$ cat my/lib1.ss
#!r6rs
(library (my lib1)
(export test)
(import (rnrs base) (rnrs io simple))
(define (test) (display "LIB1") (newline)))
$ cat my/lib2.ss
#!r6rs
(library (my lib2)
(export test)
(import (rnrs base) (rnrs io simple))
(define (test) (display "LIB2") (newline)))
ライブラリでそれぞれ test という名前で手続きを定義している。
$ cat test.scm
(import (my lib1) (my lib2))
(test)
そのまま import すると...
$ plt-r6rs test.scm
test.scm:2:0: module: identifier already imported from: (lib "my/lib1.ss") at: test in: (lib "my/lib2.ss")
エラーになる。(PLTの場合)
$ cat test.scm
(import (prefix (my lib1) lib1:) (prefix (my lib2) lib2:))
(lib1:test)
(lib2:test)
プレフィックスを付けると...
$ plt-r6rs test.scm
LIB1
LIB2
エラーにならない。
[TOP] [ALL]

© 2005-2010 M-OZ SOFT.
Powered by Gauche Ver.0.8.10