ふつける:10章読んだ
読みました.比較的短めで,速攻終わった.内容は,モジュールのインポートとエクスポート.練習問題は無し.テクニック的に重要そうなのをかいつまんでまとめます.
モジュールでのデータコンストラクタ
モジュールをインポート,エクスポートする上で,データコンストラクタのみをインポート及びエクスポートする事は出来ない.どうするか?例えば
data Revo = Eva String | Getter String Int
という型があったとする.ここで,データコンストラクタEvaをエクスポートしたいとすると,
module Revoltech (Revo(Eva),printRevo) where
とする.(Revoltechはモジュール名,printRevoは関数名)こうする事で,データコンストラクタGetterはエクスポートしないようになる.
また,データコンストラクタEvaのみをインポートする際は,
import Revoltech (Revo(Eva))
とすることでインポートできる.こうすることで,printRevoはインポートしない事になる.・・・はず.
基本的なインポート
特定エンティティのインポート
モジュールから無闇矢鱈とインポートするのではなく,必要なぶんだけ,他にインポートするモジュールと関数名が被らないように,特定のエンティティだけをインポートする.
import Text.Regex (mkRegex, matchRegex)
委譲みたいな感覚かな.
完全修飾名のみでエンティティにアクセスさせるように
先ほどと同じように,他にインポートするモジュールと関数名が被った時のために.こちらは,完全修飾名(Hoge.Huga.mapみたいな)のみでアクセスさせる方法.これには,qualified構文を使う.
import qualified Text.Regex
as構文
qualifiedを使って完全修飾名のみにしたものの,長過ぎてアクセスが大変な時に.typedefみたいなもんか.ふつけるの例だと,こんなかんじ.
import qualified Distribution.Simple.GHCPackageConfig as Conf
こりゃ短い.