top page > computer > haskell > web_lecture > for_programmer > import.html
更新日:
文責: 重城良国

モジュールの読み込み

はじめに

ライブラリを使いこなすことが効率的な開発のコツだ。

Preludeモジュール

% ghci
Prelude>

何も指定しなくてもPreludeというモジュールが暗黙に読みこまれる。プロンプトにPreludeとあるのはPreludeモジュールが読み込まれ公開されている関数や値が使えるということだ。Preludeを読み込まないためには

% ghci -XNoImplicitPrelude
>

のようにする。プロンプトからPreludeが消えた。基本的な関数が未定義となる。

> 3
3
> 3 + 8
<interactive>:X:Y: Not in scope `+'

演算子(+)はPreludeモジュールから公開されていたようだ。

Mainモジュール

空のファイルempty.hsを作成する。

% ghci empty.hs
*Main>

プロンプトに*Mainとある。ファイルに書かれたHaskellのコードはMainモジュールとなる。*はモジュールの「なか」ということだ。モジュールの外に公開されていない関数や値も使える。

対話環境でのモジュールの読み込み

対話環境でのモジュールの読み込みは:mまたは:moduleだ。

% ghci
Prelude> :m Data.Char
Prelude Data.Char> toLower 'L'
'l'

Data.MaybeモジュールのfromMaybe関数を使ってみよう。

Prelude Data.Char> :m Data.Maybe
Prelude Data.Maybe> fromMaybe 0 (Just 8)
8
Prelude Data.Maybe> fromMaybe 0 Nothing
0
Prelude Data.Maybe> toLower 'L'

<interactive>:X:Y: Not in scope `toLower'

Data.Maybeモジュールを読み込んだらData.Charモジュールが消えた。「追加で」モジュールを読み込むには:m +または:module +だ。

% ghci
Prelude> :m Data.Char
Prelude Data.Char> :m + Data.Maybe
Prelude Data.Char Data.Maybe> toLower 'L'
'l'
Prelude Data.Char Data.Maybe> fromMaybe 0 (Just 8)
8

ファイルでのモジュールの読み込み

コード中でモジュールを読み込むのはimport文だ。

import Data.Char

使い捨てのコードならこれで良い。しかし、これでは関数や値がどのモジュール由来なのかわからない。コードを読みやすくするために以下の2つのどちらか、または両方の形にする。

読み込みリストの指定

import Data.Char (toLower, toUpper)

修飾名の指定

import qualified Data.Char as Ch

Data.Charモジュールが公開している値を使うには修飾名でCh.toLowerやCh.toUpperとする。

まとめ

モジュールの読みこみを学んだ。使い捨てのコード以外では読み込みリストまたは修飾名を指定する。

「型駆動開発」へもどる 「多相関数とは」へ

正当なCSSです! HTML5 Powered with CSS3 / styling, and Semantics