flip は二つの引数をとる関数と二つの引数をとってひとつの値を返す。
Prelude> :t flip flip :: (a -> b -> c) -> b -> a -> c
引数の与えた文字列を連結して出力する関数
Prelude> let func a b = a++":"++b Prelude> func "aaa" "bbb" "aaa:bbb" Prelude> flip func "aaa" "bbb" -- flipに関数と二つの引数を渡すと逆に適用される。 "bbb:aaa"
引数を逆にする関数を定義する。
Prelude> let func2= flip func Prelude> func2 "aaa" "bbb" "bbb:aaa"
forM、forM_ という mapM、mapM_ の引数の順序を逆にした関数があり、それは flip mapM、 flip mapM_ と同等である。
> mapM_ print [1,2,3] 1 2 3 > forM_ [1,2,3] print 1 2 3 ghci> flip mapM_ [1,2,3] print 1 2 3