20

同じ中置演算子()を使用したい2つの異なるHaskellモジュール間で名前が衝突しています<*>。Haskell 98のレポートによると、

modid.varsym

許可されていますが、動作させることができません。全体としてここにありますTest.hs

module Test
where

import qualified Test2 as T

three = T.<*>

およびTest2.hs

module Test2
where
(<*>) = 3

ただし、コンパイルしようとすると、エラーメッセージが表示されます。

Test.hs:6:12: parse error on input `T.<*>'

試しT.(<*>)ましたが、うまくいきません。

によってインポートされたモジュールで定義されたシンボリック名を参照するにはどうすればよいimport qualifiedですか?

4

2 に答える 2

20

試す

three = (T.<*>)

中置演算子を整数として定義するのは奇妙です。考えてみましょう\\(集合差演算子):

import qualified Data.List as L

foo = [1..5] L.\\ [1..3] -- evaluates to [4,5]
diff = (L.\\)

上記のようにL.\\、修飾された中置演算子です。中置演算子として機能します。値として使用するには、全体を括弧で囲みます。

于 2009-04-12T03:43:46.787 に答える