generated at
liftM2
引数が2つ版のliftM

hs
liftM2 :: Monad m => (a1 -> a2 -> r) -> m a1 -> m a2 -> m r


使用例
hs
liftM2 (+) [0,1] [0,2] -- [0,2,1,3] liftM2 (+) (Just 1) Nothing -- Nothing


関数モナドに対して使うとちょっとオシャレになる
hs
valid :: Int -> Bool valid = liftM2 (&&) (0<=) (<=10)
ここでの liftM2 の型を具体化すると
hs
liftM2 :: (Int -> Int -> Bool) -> ((->) Int) Int -> ((->) Int) Int -> ((->) Int) Bool
のように m ((->) Int) になっている
以下のように書いたのと同じ意味
hs
valid n = 0 <= x && x <= 10
ポイントフリーになってる