2016-12-20 7 views
1

ラケットのモジュールから名前空間のアイテムのみをインポートしたいと思っています。 prefix-in関数は、接頭辞を使用してモジュールから関数にアクセスすることを許可しますが、古い名前を隠すことはありません。プレフィックスを使用してプレフィックスを使用しないでプレフィックスを使用してインポートする

$ racket 
Welcome to Racket v6.6. 
> (require (prefix-in tcp: racket/tcp)) 
> tcp-accept 
#<procedure:tcp-accept> 
> tcp:tcp-accept 
#<procedure:tcp-accept> 

接頭辞のない名前を非表示にする簡単な方法はありますか?

答えて

3

prefix-inフォームでは、プレフィックス付きの名前だけがインポートされ、プレフィックス付きの名前はインポートされません。ただし、racket言語にはデフォルトでracket/tcpモジュールが含まれているため、REPLの起動時にすでにインポートされています。 #lang racket/baseを使用すると、tcp-acceptはインポートされないため、プレフィックス付きのインポートがインポートされる唯一の識別子になります。 REPLの-I racket/baseオプションを使用してシミュレーションできます。

$ racket -iI racket/base 
Welcome to Racket v6.7.0.4. 
> (require (prefix-in tcp: racket/tcp)) 
> tcp-accept 
; tcp-accept: undefined; 
; cannot reference undefined identifier 
; [,bt for context] 
> tcp:tcp-accept 
#<procedure:tcp-accept> 
関連する問題