ixmonad-0.57: Embeds effect systems into Haskell using parameteric effect monads

Safe HaskellNone
LanguageHaskell98

Control.Effect.Helpers.Mapping

Documentation

data Proxy a Source

Constructors

Proxy 

data k :-> v infixl 2 Source

Constructors

(Var k) :-> v infixl 2 

Instances

(Show (Var k), Show v) => Show ((:->) k v) 
Chooser (CmpSymbol j k) => OrdH ((:->) j u) ((:->) k v) 
(Monoid u, Nubable ((:) * ((:->) k u) s)) => Nubable ((:) * ((:->) k u) ((:) * ((:->) k u) s))

Define the operation for removing duplicates using mappend

Update ((:) * ((:->) j ((:!) b s)) as) as' => Update ((:) * ((:->) k ((:!) a W)) ((:) * ((:->) j ((:!) b s)) as)) as' 
Update ((:) * ((:->) k ((:!) a R)) as) as' => Update ((:) * ((:->) k ((:!) a W)) ((:) * ((:->) k ((:!) b R)) as)) as' 
Update ((:) * ((:->) k ((:!) b R)) as) as' => Update ((:) * ((:->) k ((:!) a s)) ((:) * ((:->) k ((:!) b s)) as)) as' 
Update ((:) * ((:->) j ((:!) b s)) as) as' => Update ((:) * ((:->) k ((:!) a R)) ((:) * ((:->) j ((:!) b s)) as)) ((:) * ((:->) k ((:!) a R)) as') 
type Max ((:->) j u) ((:->) k v) = (:->) (Select Symbol j k k j) (Select * j k v u) 
type Min ((:->) j u) ((:->) k v) = (:->) (Select Symbol j k j k) (Select * j k u v) 

data Var k where Source

Constructors

Var :: Var k 
X :: Var "x" 
Y :: Var "y" 
Z :: Var "z" 

Instances

Show (Var "x") 
Show (Var "y") 
Show (Var "z") 

select :: forall j k a b. Chooser (CmpSymbol j k) => Var j -> Var k -> a -> b -> Select j k a b Source

type Select a b p q = Choose (CmpSymbol a b) p q Source

type family Choose o p q Source

Equations

Choose LT p q = p 
Choose EQ p q = p 
Choose GT p q = q 

class Chooser o where Source

Methods

choose :: Proxy o -> p -> q -> Choose o p q Source

Instances