module Pandora.Paradigm.Primary.Auxiliary where

import Pandora.Pattern.Category ((<--))
import Pandora.Pattern.Functor.Covariant (Covariant ((<-|-)))
import Pandora.Paradigm.Algebraic.Exponential ()

data Vertical a = Up a | Down a

instance Covariant (->) (->) Vertical where
	a -> b
f <-|- :: (a -> b) -> Vertical a -> Vertical b
<-|- Up a
x = b -> Vertical b
forall a. a -> Vertical a
Up (b -> Vertical b) -> b -> Vertical b
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- a -> b
f a
x
	a -> b
f <-|- Down a
x = b -> Vertical b
forall a. a -> Vertical a
Down (b -> Vertical b) -> b -> Vertical b
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- a -> b
f a
x

data Horizontal a = Left a | Right a

instance Covariant (->) (->) Horizontal where
	a -> b
f <-|- :: (a -> b) -> Horizontal a -> Horizontal b
<-|- Left a
x = b -> Horizontal b
forall a. a -> Horizontal a
Left (b -> Horizontal b) -> b -> Horizontal b
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- a -> b
f a
x
	a -> b
f <-|- Right a
x = b -> Horizontal b
forall a. a -> Horizontal a
Right (b -> Horizontal b) -> b -> Horizontal b
forall (m :: * -> * -> *) a b. Category m => m (m a b) (m a b)
<-- a -> b
f a
x