計算機科学のブログ

コンテキストでの型の操作 Applicative型クラス:関数をコンテキスト内で使用する 2つの都市の距離を計算するコマンドラインアプリケーション Maybe Int型の和

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT5(コンテキストでの型の操作)、LESSON28(Applicative型クラス:関数をコンテキスト内で使用する)、28.1(2つの都市の距離を計算するコマンドラインアプリケーション)、クイックチェック 28-1の解答を求めてみる。

コード

addMaybe :: Maybe Int -> Maybe Int -> Maybe Int
addMaybe Nothing _ = Nothing
addMaybe _ Nothing = Nothing
addMaybe (Just n) (Just m) = Just $ n + m

maybeInts :: [Maybe Int]
maybeInts = [Just $ -1, Just 0, Just 2, Just 5, Nothing]

main :: IO ()
main = do
  mapM_
    ( \m ->
        mapM_
          (print . addMaybe m)
          maybeInts
    )
    maybeInts

入出力結果(Terminal, Zsh)

% runghc sample01.hs 
Just (-2)
Just (-1)
Just 1
Just 4
Nothing
Just (-1)
Just 0
Just 2
Just 5
Nothing
Just 1
Just 2
Just 4
Just 7
Nothing
Just 4
Just 5
Just 7
Just 10
Nothing
Nothing
Nothing
Nothing
Nothing
Nothing
%