計算機科学のブログ

型によるプログラミング Maybe型 欠損値に対処する データコンストラクタ、Just、Nothing

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

コード

numOrZero :: Maybe Int -> Int
numOrZero Nothing = 0
numOrZero (Just n) = n

入出力結果(Terminal, Zsh)

% ghci
GHCi, version 8.10.5: https://www.haskell.org/ghc/  :? for help
macro 'doc' overwrites builtin command.  Use ':def!' to overwrite.
(0.00 secs, 0 bytes)
(0.00 secs, 0 bytes)
Loaded GHCi configuration from /.../.ghc/ghci.conf
Prelude
λ> :load sample02.hs 
[1 of 1] Compiling Main             ( sample02.hs, interpreted )
Ok, one module loaded.
(0.04 secs,)
*Main
λ> nu
null       numOrZero
λ> numOrZero Nothing
0
it :: Int
(0.02 secs, 62,032 bytes)
*Main
λ> numOrZero (Just 10)
10
it :: Int
(0.01 secs, 60,464 bytes)
*Main
λ> map numOrZero (map Just [-5..5] ++ [Nothing])
[-5,-4,-3,-2,-1,0,1,2,3,4,5,0]
it :: [Int]
(0.02 secs, 86,296 bytes)
*Main
λ> :quit
Leaving GHCi.
%```