実践Haskell Monad型クラス HaskellのエラーとEither型 Either型 Functor、Applicative、<$>と<*>
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON38(HaskellのエラーとEither型)、38.3(Either型)、head関数と部分関数、クイックチェック 38-3の解答を求めてみる。
コード
eitherHead :: [b] -> Either String b
eitherHead [] = Left "空のリストだから先頭の要素はない"
eitherHead (x:_) = Right x
intExample :: [Int]
intExample = [1..3]
a :: Either String Int
a = (+) <$> eitherHead intExample <*> eitherHead (tail intExample)
main = do
print intExample
print a
入出力結果(Terminal, Zsh)
% runghc sample03.hs
[1,2,3]
Right 3
%