module Pandora.Core.Functor where
infixl 2 #
infixr 0 :=, <:=, :=>, :=:=>, ~>
infixr 1 .:, :.
infixr 2 ::|:., ::|.:, ::|::
infixr 9 :::
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' -> *