Skip to content
Haskell

モジュールとインポート

モジュールでコードを整理しエクスポートを制御。

#module#import#export

Code

haskell
-- File: MyModule.hs
module MyModule
  ( -- Export only these
    greet
  , Person(..)        -- exports type and all constructors
  , mkPerson
  ) where

import Data.List (sort, nub)        -- specific functions
import qualified Data.Map as M      -- qualified (M.lookup)
import Data.Maybe (fromJust, isJust)

-- Define and export
data Person = Person { pName :: String, pAge :: Int }
  deriving (Show, Eq)

greet :: Person -> String
greet (Person name _) = "Hello, " ++ name

mkPerson :: String -> Int -> Maybe Person
mkPerson name age
  | age < 0    = Nothing
  | otherwise  = Just (Person name age)

-- Usage in another module:
-- import MyModule (greet, Person(..), mkPerson)
-- import qualified MyModule as M  -- M.greet, M.Person