モジュール

10.1 モジュールの基本概念


HaskellJavaでいうところのパッケージ、Cでいうところのライブラリに当たるものですね。
モジュールが分かれていれば同じ関数名などのエンティティがあってもいいんですね。
モジュールの使い方を勉強したら試してみよ。

10.2 モジュールの定義とエクスポート

コメントの書き方

あっ、この節とは全然関係ないけど、思い出したので。
そういえば、Haddockの使い方を勉強しなきゃなぁ、と思ってたんだけど忘れていました。
本章と次のモナドの章を読み終えたら勉強しよ。

モジュールをコンパイルしてみる

こんな感じのソースを書いてみました。
いつものようにnonsenseなコードですけど。

  • file_util.hs
module FileUtils (SomeType(ConsA, ConsB)) where

data SomeType = ConsA String | ConsB Int | ConsC Double


main変数(アクション)がないので普通にビルドすると怒られます。

% ghc -W -o file_util file_util.hs
/usr/local/lib/ghc-6.10.4/libHSrts.a(Main.o): In function `real_main':
Main.c:(.text+0x12): undefined reference to `__stginit_ZCMain'
Main.c:(.text+0x2c): undefined reference to `ZCMain_main_closure'
collect2: ld returned 1 exit status


ghc --helpで調べると、オブジェクトファイルまで生成する指定があったのでやってみます。

% ghc -c file_util.hs             
% ls file_util.o
file_util.o


よしよし、オブジェクトファイルが出来ました。
モジュールの利用(インポート)はまた明日。