通常、何かをインポートするときは、次のようにします。
import Data.Foo -- A module that contains "data Bar = Bar ..."
myfunction = Bar 3 2 4 -- Use Bar
Data.Foo
ご覧のとおり、同じモジュールでコードを書いているかのように、モジュール内のすべてのものに直接アクセスできます。
代わりに、修飾付きで何かをインポートできます。つまり、アクセスするたびに、参照しているモジュールへの完全な「パス」を指定する必要があります。
import qualified Data.Foo -- A module that contains "data Bar = Bar ..."
myfunction = Data.Foo.Bar 3 2 4 -- Use Bar
ここでは、モジュールが修飾されたものとしてインポートされているため、アクセスしているデータ型への完全な「パス」を指定する必要があります。
修飾付きで何かをインポートする別の方法があります。次のように、モジュール「パス」のエイリアスを指定できます。
import qualified Data.Foo as Foo -- A module that contains "data Bar = Bar ..."
myfunction = Foo.Bar 3 2 4 -- Use Bar
Data.Foo
パーツの名前を単純に に変更しましたFoo
。このようにFoo.Bar
して、データコンストラクターを参照するときに記述できます。
Data.Vector.Unboxed
エイリアスを使用してモジュールをインポートしましたVector
。これは、Vector
データ型にアクセスする場合は、 を使用する必要があることを意味しますVector.Vector
。代わりに、次のようなベクターをインポートすることをお勧めします。
import Data.Vector.Unboxed (Vector)
import qualified Data.Vector.Unboxed as Vector
Vector
このように、モジュール修飾子なしでアクセスできるようにタイプを直接インポートしますが、関数を使用する場合は、プレフィックスVector
を追加する必要があります (例: )。Vector
Vector.null ...