symantic-base-0.0.2.20200708: Basic symantics for writing Embedded Domain-Specific Languages (EDSL).

Safe HaskellNone
LanguageHaskell2010

Symantic.Base.Permutable

Contents

Synopsis

Class Permutable

class Permutable repr where Source #

Minimal complete definition

permutable, perm, noPerm, permWithDefault

Associated Types

type Permutation (repr :: * -> * -> *) = (r :: * -> * -> *) | r -> repr Source #

Methods

permutable :: Permutation repr (a -> k) k -> repr (a -> k) k Source #

perm :: repr (a -> k) k -> Permutation repr (a -> k) k Source #

noPerm :: Permutation repr k k Source #

permWithDefault :: a -> repr (a -> k) k -> Permutation repr (a -> k) k Source #

optionalPerm :: Eitherable repr => Dimapable repr => Permutable repr => repr (a -> k) k -> Permutation repr (Maybe a -> k) k Source #

(<&>) :: Permutable repr => Tupable (Permutation repr) => repr (a -> k) k -> Permutation repr (b -> k) k -> Permutation repr ((a, b) -> k) k infixr 4 Source #

(<?&>) :: Eitherable repr => Dimapable repr => Permutable repr => Tupable (Permutation repr) => repr (a -> k) k -> Permutation repr (b -> k) k -> Permutation repr ((Maybe a, b) -> k) k infixr 4 Source #

(<*&>) :: Eitherable repr => Repeatable repr => Dimapable repr => Permutable repr => Tupable (Permutation repr) => repr (a -> k) k -> Permutation repr (b -> k) k -> Permutation repr (([a], b) -> k) k infixr 4 Source #

(<+&>) :: Eitherable repr => Repeatable repr => Dimapable repr => Permutable repr => Tupable (Permutation repr) => repr (a -> k) k -> Permutation repr (b -> k) k -> Permutation repr (([a], b) -> k) k infixr 4 Source #