計算機科学のブログ

コンテキストでの型の操作 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
%