実践Haskell HaskellのエラーとEither型 Monad、<$>演算子、<*>演算子
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT7(実践Haskell)、LESSON 38(HaskellのエラーとEither型)、38.3(Either型)、クイックチェック 38-3の解答を求めてみる。
コード
palindrome-checker/app/Main.hs
module Main (main) where
import Lib (eitherHead)
intExample :: [Int]
intExample = [1, 2, 3]
main :: IO ()
main = do
print $
(+)
<$> eitherHead intExample
<*> eitherHead (tail intExample)
palindrome-checker/src/Lib.hs
module Lib
( eitherHead,
)
where
eitherHead :: [b] -> Either String b
eitherHead [] = Left "There si no head because the list is empty"
eitherHead (x : _) = Right x
入出力結果(Terminal, Zsh)
% stack exec palindrome-checker-exe
Right 3
%