{-# LANGUAGE DataKinds #-} {-# LANGUAGE TypeOperators #-} module Cascade.Operators where import Control.Category (Category(..)) import Control.Comonad (Comonad(..)) import Cascade.Util.ListKind import Cascade (#) :: Category c => CascadeC c (t ': ts) -> c t (Last (t ': ts)) (#) = cascade infixr 0 # (#~) :: Monad m => CascadeM m (t ': ts) -> t -> m (Last (t ': ts)) (#~) = cascadeM infixr 0 #~ (~#) :: Comonad w => CascadeW w (t ': ts) -> w t -> Last (t ': ts) (~#) = cascadeW infixr 0 ~#