計算機科学のブログ

型によるプログラミング Maybe型:欠損値に対処する Maybeを使った計算より複雑な計算

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT3(型によるプログラミング)、LESSON19(Maybe型:欠損値に対処する)、19.4(Maybeを使った計算より複雑な計算)、クイックチェック 19-3の解答を求めてみる。

コード

data Organ = Brain deriving (Show)

data Container = Vat Organ deriving (Show)

data Location = Lab deriving (Show)

report :: Maybe (Location, Container) -> String
report (Just (location, container)) =
  show container ++ " in the " ++ show location
report Nothing = "report: 欠損したパーツ"

main :: IO ()
main = do
  putStrLn $ report $ Just (Lab, Vat Brain)
  putStrLn $ report Nothing

入出力結果(Terminal, Zsh)

% runghc sample03.hs 
Vat Brain in the Lab
report: 欠損したパーツ
%