module Pandora.Core.Functor (Variant (..), Natural, type (~>), type (:.:)) where

import Pandora.Pattern.Functor.Covariant (Covariant)

type Natural t u = forall a . (Covariant t, Covariant u) => t a -> u a

type (~>) t u = Natural t u

data Variant = Co | Contra

infixr 0 :.:
type (:.:) t u a = t (u a)