Safe Haskell | Safe-Inferred |
---|---|
Language | Haskell2010 |
Synopsis
- data SomeData sem a = forall able.(Derivable (Data able sem), Typeable able) => SomeData (Data able sem a)
- data family Data (able :: Syntax) :: Semantic -> Semantic
- pattern Data :: Typeable able => Data able sem a -> SomeData sem a
- unSomeData :: forall able sem a. Typeable able => SomeData sem a -> Maybe (Data able sem a)
- normalOrderReduction :: forall sem a. Abstractable sem => IfThenElseable sem => SomeData sem a -> SomeData sem a
Type SomeData
Instances
(Constantable c sem, Typeable c) => Constantable c (SomeData sem) Source # | |
Defined in Symantic.Syntaxes.Data | |
Abstractable sem => Abstractable (SomeData sem) Source # | |
Anythingable (SomeData sem) Source # | |
Eitherable sem => Eitherable (SomeData sem) Source # | |
Emptyable sem => Emptyable (SomeData sem) Source # | |
Defined in Symantic.Syntaxes.Data | |
Equalable sem => Equalable (SomeData sem) Source # | |
Abstractable sem => Functionable (SomeData sem) Source # | |
IfThenElseable sem => IfThenElseable (SomeData sem) Source # | |
Defined in Symantic.Syntaxes.Data | |
Listable sem => Listable (SomeData sem) Source # | |
Maybeable sem => Maybeable (SomeData sem) Source # | |
Semigroupable sem => Semigroupable (SomeData sem) Source # | |
Unabstractable sem => Unabstractable (SomeData sem) Source # | |
Derivable (SomeData sem) Source # | |
Show (SomeData Viewer a) Source # | |
type Derived (SomeData sem) Source # | |
Defined in Symantic.Syntaxes.Data |
Type Data
data family Data (able :: Syntax) :: Semantic -> Semantic infixr 4 `Cons`, `Concat` Source #
Instances
pattern Data :: Typeable able => Data able sem a -> SomeData sem a Source #
Convenient utility to pattern-match a SomeData
.
unSomeData :: forall able sem a. Typeable able => SomeData sem a -> Maybe (Data able sem a) Source #
normalOrderReduction :: forall sem a. Abstractable sem => IfThenElseable sem => SomeData sem a -> SomeData sem a Source #
Beta-reduce the left-most outer-most lambda abstraction (aka. normal-order reduction), but to avoid duplication of work, only those manually marked as using their variable at most once.
DOC: Demonstrating Lambda Calculus Reduction, Peter Sestoft, 2001, https://www.itu.dk/people/sestoft/papers/sestoft-lamreduce.pdf