module Pandora.Core.Functor where
infixl 9 <
infixl 8 <<
infixl 7 <<<
infixl 6 <<<<
infixl 5 <<<<<
infixl 4 <<<<<<
infixl 3 <<<<<<<
infixl 2 <<<<<<<<
infixl 1 <<<<<<<<<
infixr 9 >
infixr 8 >>
infixr 7 >>>
infixr 6 >>>>
infixr 5 >>>>>
infixr 4 >>>>>>
infixr 3 >>>>>>>
infixr 2 >>>>>>>>
infixr 1 >>>>>>>>>
infixr 0 <:=, :=>, :=:=>, ~>
infixr 8 .:, :.
infixr 5 ::|:., ::|.:, ::|::
infixr 7 :::
type (<) t a = t a
type (<<) t a = t a
type (<<<) t a = t a
type (<<<<) t a = t a
type (<<<<<) t a = t a
type (<<<<<<) t a = t a
type (<<<<<<<) t a = t a
type (<<<<<<<<) t a = t a
type (<<<<<<<<<) t a = t a
type (>) t a = t a
type (>>) t a = t a
type (>>>) t a = t a
type (>>>>) t a = t a
type (>>>>>) t a = t a
type (>>>>>>) t a = t a
type (>>>>>>>) t a = t a
type (>>>>>>>>) t a = t a
type (>>>>>>>>>) t a = t a
type (:.) t u a = t (u a)
type (.:) t u a = u (t a)
type (:=>) a t = a -> t a
type (:=:=>) a t = a -> t a -> t a
type (<:=) a t = t a -> a
type t ~> u = forall a . t a -> u a
type t ~~> u = forall a b . t a b -> u a b
type (::|:.) p a b = p (p a b) b
type (::|.:) p a b = p a (p a b)
type (::|::) p a b = p (p a b) (p a b)
data (:::) t u :: k -> k' -> *