module IxApplicative where

class IxFunctor f where
  map ∷ forall a b x y. (a -> b) -> f x y a -> f x y b

class IxFunctor f <= IxApplicative f where
  pure ∷ forall a x y. a -> f x y a
  apply ∷ forall a b x y z. f x y (a -> b) -> f y z a -> f x z b