function-combine-0.1.0: Combining functions

Control.Combine

Documentation

class ComposeType n a b c | n a b -> cSource

Instances

(TypeCast d a, TypeCast e c, TypeCast f b) => ComposeType Z (b -> c) (a -> f) (d -> e) 
ComposeType n (b -> c) s t => ComposeType (S n) (b -> c) (a -> s) (a -> t) 

data C f g Source

Instances

Apply (C (b -> c) (a -> b)) Z ((b -> c) -> (a -> b) -> a -> c) 
Apply (C (b -> c) s) n ((b -> c) -> s -> t) => Apply (C (b -> c) (a -> s)) (S n) ((b -> c) -> (a -> s) -> a -> t) 

class Compose n a b c | n a b -> c whereSource

Methods

compose :: n -> a -> b -> cSource

Instances

(ComposeType n (b -> c) (a -> f) (d -> e), Apply (C (b -> c) (a -> f)) n ((b -> c) -> (a -> f) -> d -> e)) => Compose n (b -> c) (a -> f) (d -> e) 

class FlipType n a b | n a -> bSource

Instances

(TypeCast d a, TypeCast e b, TypeCast f c) => FlipType Z (a -> b -> c) ((d -> e -> f) -> e -> d -> f) 
FlipType n f ((a -> b -> c -> d) -> b -> a -> c -> d) => FlipType (S n) f ((b -> c -> d) -> c -> b -> d) 

class RotType n a b | n a -> bSource

Instances

TypeCast a b => RotType Z a b 
(RotType (S n) b g, FlipType (S n) a ((d -> e -> f) -> e -> d -> f), ComposeType n ((d -> e -> f) -> e -> d -> f) a b) => RotType (S (S n)) a g 
(TypeCast d b, TypeCast e a, TypeCast f c) => RotType (S Z) (a -> b -> c) (d -> e -> f) 

data R a Source

Instances

Apply (R a) Z (a -> a) 
Apply (R (b -> a -> c)) (S Z) ((b -> a -> c) -> a -> b -> c) 
(Apply (R b) (S n) (b -> f), FlipType (S n) a ((c -> d -> e) -> d -> c -> e), Compose n ((c -> d -> e) -> d -> c -> e) a b) => Apply (R a) (S (S n)) (a -> f) 

class Rot n a b | n a -> b whereSource

Methods

rot :: n -> a -> bSource

Instances

(RotType n a b, Apply (R a) n (a -> b)) => Rot n a b