symantic-6.3.2.20180208: Library for Typed Tagless-Final Higher-Order Composable DSL

Safe HaskellSafe
LanguageHaskell2010

Language.Symantic.Transforming.Trans

Synopsis

Documentation

class Trans tr where Source #

NOTE: DefaultSignatures can be used when declaring a symantic type class to provide default definition of the methods: implementing their identity transformation in order to avoid boilerplate code when writting Trans instances which do not need to alterate those methods.

Minimal complete definition

trans, unTrans

Associated Types

type UnT tr :: * -> * Source #

Return the underlying tr of the transformer.

Methods

trans :: UnT tr a -> tr a Source #

Lift a tr to the transformer's.

unTrans :: tr a -> UnT tr a Source #

Unlift a tr from the transformer's.

trans1 :: (UnT tr a -> UnT tr b) -> tr a -> tr b Source #

Identity transformation for a unary symantic method.

trans2 :: (UnT tr a -> UnT tr b -> UnT tr c) -> tr a -> tr b -> tr c Source #

Identity transformation for a binary symantic method.

trans3 :: (UnT tr a -> UnT tr b -> UnT tr c -> UnT tr d) -> tr a -> tr b -> tr c -> tr d Source #

Identity transformation for a ternary symantic method.

Instances
Sym_Lambda term => Trans (BetaT term) Source # 
Instance details

Defined in Language.Symantic.Transforming.Beta

Associated Types

type UnT (BetaT term) :: * -> * Source #

Methods

trans :: UnT (BetaT term) a -> BetaT term a Source #

unTrans :: BetaT term a -> UnT (BetaT term) a Source #

trans1 :: (UnT (BetaT term) a -> UnT (BetaT term) b) -> BetaT term a -> BetaT term b Source #

trans2 :: (UnT (BetaT term) a -> UnT (BetaT term) b -> UnT (BetaT term) c) -> BetaT term a -> BetaT term b -> BetaT term c Source #

trans3 :: (UnT (BetaT term) a -> UnT (BetaT term) b -> UnT (BetaT term) c -> UnT (BetaT term) d) -> BetaT term a -> BetaT term b -> BetaT term c -> BetaT term d Source #