モジュール
10.3 インポート
qualifiedやasを使ってみる。
さて最後にqualifiedやasを使って、昨日exportしたものを使ってみます。
こんな感じ。
- FileUtils.hs
{-- ファイル操作用モジュール(実際には違うけど…) --} module FileUtils (SomeType(ConsA, ConsB), AnotherType(AnotherA, AnotherB)) where data SomeType = ConsA String | ConsB Int | ConsC Double deriving Show data AnotherType = AnotherA String | AnotherB Int | AnotherC Double deriving Show
- import_test.hs
import qualified FileUtils as FU -- hiding (SomeType(ConsB)) main = do print some print another some :: FU.SomeType some = FU.ConsA "SomeType created by ConsA" another :: FU.AnotherType another = FU.AnotherB 10
% ghc -c -W FileUtils.hs FileUtils.hs:6:43: Warning: Defined but not used: data constructor `ConsC' FileUtils.hs:7:52: Warning: Defined but not used: data constructor `AnotherC' % ghc -W -o import_test import_test.hs FileUtils.o
未使用なデータコンストラクタがあるのでちょっと注意されますが、
まぁ気にせず(汗)。
いい感じですが、ちょっとハマりました。
モジュールを作る場合、ファイル名はモジュール名と同じじゃないといけないっぽいですね。
ここを参考にしました。
あと、hiding指定でデータコンストラクタだけをhidingするのは出来なさそうですね。
10.4 本章のまとめ
では、明日からは難関、モナドに進みます。