私は通常、特定の識別子がどこに来たかを一目で知ることができますので、ほとんどの言語で名前空間(修飾モジュール名)を使用していますから。ハスケルでは、Prelude関数との共通名の衝突を避けるという追加の利点もあります。修飾名で醜いインフィックスシンボルを扱うにはどうすればいいですか
しかし、私は中置シンボル(または他の短い、DSL-Yの識別子)に名前空間を置くために持っているような感じはこのように、私は値を再輸出するように誘惑しています本当に奇妙に見える:
import qualified Data.Sequence as Seq
(|>) = (Seq.|>)
(<|) = (Seq.<|)
何今私は盗聴しています。
手動で値を再輸出すると退屈な定型文句が感じられます。
は手動で値を再輸出することは私がどのように
import qualified Data.Sequence as Seq (:>) = (Seq.:>) --gives me a parse error: --"Not in scope: data constructor `:>'"
(私はまだ遭遇しませんでしたし、おそらく他のもの)は、既存のモジュールシステムを一周し、データコンストラクタで動作していないようです中置記号と名前空間を調和させるか?私はあきらめてすべての名前空間を覚えるべきですか?名前空間とシンボルに関するハスケルのベストプラクティスを検証していますか?
import Data.Sequence ((|>), (<|), ViewR ((:>)))
import qualified Data.Sequence as Seq
これは、資格のある他のすべてを残し、唯一:>
、|>
と<|
修飾されていないをインポートします:
私がこれを試してみると、コンパイル時に次のエラーが発生します: 'what 'が冗長です。あなたもこれを手に入れますか?警告を取り除くことは可能ですか? – VF1