コンテキストでの型の操作 Functor型クラス Functor型クラスのコンテキストで関数を使用する fmap関数、二項演算子<$>
入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT5(コンテキストでの型の操作)、LESSON 27(Functor型クラス)、27.2(Functor型クラスのコンテキストで関数を使用する)のクイックチェック27-2の解答を求めてみる。
コード
s1 = Just "abcdef"
s2 = Nothing
-- fmap関数版
reversed11 :: Maybe String
reversed11 = fmap reverse s1
reversed12 :: Maybe String
reversed12 = fmap reverse s2
-- 二項演算子<$>版
reversed21 :: Maybe String
reversed21 = reverse <$> s1
reversed22 :: Maybe String
reversed22 = reverse <$> s2
ss :: [Maybe String]
ss = [s1, s2, reversed11, reversed12, reversed21, reversed22]
main :: IO ()
main = do
mapM_ print ss
入出力結果(Terminal, Zsh)
% runghc sample02.hs
Just "abcdef"
Nothing
Just "fedcba"
Nothing
Just "fedcba"
Nothing
%