M-OZ BLOG

Scheme-users.jpTwitter

# 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]