haskell 6-module
TRANSCRIPT
モジュールをインポートする
= import ModuleName #関数定義よりも前に書く(通常はファイルの先頭)
複数のモジュールをインポートする
= import ModuleName1
import ModuleName2
…
例:Data.Listモジュールのインポート
import Data.List
numUniques :: (Eq a) => [a] -> Int
numUniques = length . nub #(関数合成版)
numUniques xs = length (nub xs) #(通常版)
numUniques = \xs -> length (nub xs) #(λ版)
モジュールをGHCiでインポートする
ghci> :m + Data.List
複数のモジュールをGHCiでインポートする
ghci> :m + Data.List Data.map Data.Set
特定の関数をインポートする
= import Data.List (nub, sort)
特定の関数以外をインポートする #名前の競合を避けるためなど・・・
= import Data.List hiding (nub)
例:Data.Map.filterの利用
#Prelude.filterと名前競合
= import qualified Data.Map
Data.Map.filter ...
もっと簡単に
= import qualified Data.Map as M
M.filter ...
例:幾何学オブジェクトの体積と 面積を計算するモジュール
2.モジュールの先頭でモジュール名を指定する
#ファイル名に従ったモジュール名を指定
Geometry.hs -> module Geometry
例:幾何学オブジェクトの体積と 面積を計算するモジュール
4.関数を追加する
module Geometry
(sphereVolume,
...
)where
sphereVolume :: Float -> Float
sphereVolume = (4.0/3.0) * pi * (radius ^ 3)
例:幾何学オブジェクトの体積と 面積を計算する分割されたモジュール
3.モジュールの先頭でモジュール名を指定する #フォルダ名とファイル名に従った #モジュール名を指定
Geometry/Sphere.hs
-> module Geometry.Sphere
例:幾何学オブジェクトの体積と 面積を計算するモジュール
4.関数を追加する
module Geometry.Sphere
(Volume,
area
)where
Volume :: Float -> Float
Volume = (4.0/3.0) * pi * (radius ^ 3)
モジュールは階層構造を持つこともできる
・モジュールに分けることで、
同じ名前の関数を定義することが可能
Geometry.Sphere.volume
Geometry.Cuboid.volume
Geometry.Cube.volume