型によるプログラミング Maybe型:欠損値に対処する Maybe型版map関数
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT3(型によるプログラミング)、LESSON 19(Maybe型:欠損値に対処する)、19.6(練習問題)Q19-2の解答を求めてみる。
コード
lesson/app/Main.hs
module Main where
import Lib
maybeNums :: [Maybe Int]
maybeNums = [Just 1, Nothing, Just 2, Just 3, Nothing]
main :: IO ()
main = do
mapM_
( \f ->
print $
map (maybeMap f) maybeNums
)
[id, (+ 1), (* 2)]
print $ map (maybeMap show) maybeNums
lesson/src/Lib.hs
module Lib where
maybeMap :: (t -> a) -> Maybe t -> Maybe a
maybeMap f (Just x) = Just $ f x
maybeMap f Nothing = Nothing
入出力結果(Terminal, Zsh)
% stack exec lesson-exe
[Just 1,Nothing,Just 2,Just 3,Nothing]
[Just 2,Nothing,Just 3,Just 4,Nothing]
[Just 2,Nothing,Just 4,Just 6,Nothing]
[Just "1",Nothing,Just "2",Just "3",Nothing]
%