計算機科学のブログ

実践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
%