Hatena::Grouphaskell

lnzntのHaskell日記 このページをアンテナに追加 RSSフィード

2014年11月24日(月)

モジュール

| 22:00 |  モジュール - lnzntのHaskell日記 を含むブックマーク はてなブックマーク -  モジュール - lnzntのHaskell日記  モジュール - lnzntのHaskell日記 のブックマークコメント

module 宣言

module 宣言の例。

module FileUtils where

この場合、モジモジュールで定義したすべてのエンティティがエクスポートされる。

エクスポートするエンティティの限定する例
module FileUtils (makePath, forceRemove) where

() 内をエクスポートリストと呼ぶ。

インポートしたモジュールのエンティティをすべてまとめて再エクスポートする例
module FileUtils (module Hoge.Fuga) where

import Hoge.Fuga

エクスポートリストに「module モジュール名」と書く。

データコンストラクタをエクスポートする例
data SomeType = ConsA String | ConsB Int

module Hoge (SomeType(ConsA), a, b, c) where

データコンストラクタ型コンストラクタとともにエクスポートリストに書く。

複数エクスポートする場合は以下。

module Hoge (SomeType(ConsA, ConsB), a, b, c) where
または
module Hoge (SomeType(..), a, b, c) where  -- 「..」の場合はすべてのデータコンストラクタを指定したことになる

Main モジュール

module 宣言を省略した場合、ファイルの先頭には以下のようなモジュール宣言が補われる。

module Main (main) where

import 宣言

import 宣言の例

import Hoge.Fuga
特定のエンティティをインポートする例
import Hoge.Fuga (foo, bar)

() 内をインポートリストと呼ぶ。

データコンストラクタのインポートの書式はエクスポートと同様。

hiding 構文
import Hoge.Fuga hiding (baz)

特定のエンティティのインポートを防止する。

qualified 構文
import qualified Hoge.Fuga

エンティティが完全修飾名でのみインポートされる。

as 構文
import HogeHogeHoge.FugaFugaFuga as Hoga

as により一時的な別の完全修飾名を使えるようになる。