-- zipWithN infixl 2 <$> infixl 1 <-> (<$>) = map (<->) = zipWith ($) -- 例 -- (\x y z -> x + y + z) <$> [3,4] <-> [5,6] <-> [7,8]
---------------------------- -- 可変引数 ncat :: NCat b => b ncat = ncat' id class NCat a where ncat' :: (String -> String) -> a instance NCat String where ncat' f = f "" instance NCat b => NCat (Char -> b) where ncat' f x = ncat' (f . (x:))