実践Haskell HaskellのエラーとEither型 コンストラクタ、LeftとRight
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 38(HaskellのエラーとEither型)、38.3(Either型)のクイックチェック 38-3の解答を求めてみる。
コード
intExample :: [Int]
intExample = [1..3]
eitherHead :: [a] -> Either String a
eitherHead [] = Left "There is no head because the list is empty"
eitherHead (x:_) = Right x
main :: IO ()
main = do
print ((+) <$> eitherHead intExample <*> eitherHead (tail intExample))
入出力結果(Terminal, Zsh)
% runghc sample03.hs
Right 3
%