Haskellのモジュール
普通に使う
code:haskell
import Data.List
インポートするモジュールが複数ある場合は、宣言はモジュールごとに書く必要がある
記述 参照可能な名前 説明
import M x, y, M.x, M.y すべてのエンティティをインポート
import M(x) x, M.x エンティティ x のみインポート
import M hiding (x) y, M.y エンティティ x 以外をインポート
import qualified M M.x, M.y モジュール名による修飾を必須化する
import M as N x, y, N.x, N.y モジュール名 M を N と置き換える
こんな感じで書き方は色々ある
特定のモジュールをインポートしたくない場合はhidingと書くと隠蔽できる
自作のモジュールを作る
code:haskell
-- ファイル: Geometry.hs
module Geometry where
data Shape = Tri { base, height:: Double }
| Rect { width, height :: Double }
area :: Shape -> Double
area (Tri x y) = x * y / 2
area (Rect x y) = x * y
先頭にモジュール名を選言する
使う側で以下のようにimportで呼び出す
code:haskell
import Geometry
main = do print $ width (Rect 3 4) -- 出力: 3.0
print $ height (Rect 3 4) -- 出力: 4.0
print $ area (Tri 3 4) -- 出力: 6.0
print $ area (Rect 3 4) -- 出力: 12.0
エクスポートするものは( XX, YY )みたいな形式でエクスポート可能
モジュールは階層に紐づいている