module Data.Ap where

newtype Ap f x a = Ap { Ap f x a -> f a (x a)
ap :: f a (x a) }