-- 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:))

-- 例
-- ncat 'a' 'b' 'c'

>>183の171は179の間違い。