計算機科学のブログ

コンテキストでの型の操作 Monad型クラス <$>の汎用版、必須メソッド、>>=演算子、ラムダ関数、return

入門Haskellプログラミング (Will Kurt(著)、株式会社クイープ(監修、翻訳)、翔泳社)のUNIT5(コンテキストでの型の操作)、LESSON 30(Monad型クラス)、30.5(練習問題)Q30-1の解答を求めてみる。

コード

allFmapM :: Monad m => (a -> b) -> m a -> m b
allFmapM f x = x >>= \x -> return (f x)

inc :: Integer -> Integer
inc = (+ 1)

xs = map (allFmapM inc) (map Just [1..5])

main :: IO ()
main = do
    mapM_ print xs

入出力結果(Terminal, Zsh)

% runghc sample1.hs 
Just 2
Just 3
Just 4
Just 5
Just 6
%