Safe Haskell | None |
---|---|
Language | Haskell2010 |
Language.Haskell.Extensions.Reformulator
Description
The module exports functions that reformulate an AST in terms of the language extensions it uses.
Synopsis
- data ReformulationOf (e :: ExtensionSwitch) (es :: [ExtensionSwitch]) λ l pos s
- type Wrap l pos s = WithEnvironment l (Wrapped pos s)
- dropRecordWildCards :: forall l1 l2 node pos s. (Haskell l2, ExtendedWith '['NamedFieldPuns] l2, SameWrap 'RecordWildCards '['NamedFieldPuns] pos s l1 l2, FullyTranslatable (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] l1 l2 pos s) node) => Wrap l1 pos s (node l1 l1 (Wrap l1 pos s) (Wrap l1 pos s)) -> Wrap l1 pos s (node l2 l2 (Wrap l1 pos s) (Wrap l1 pos s))
- dropNPlusKPatterns :: forall l1 l2 node pos s. (Haskell l2, ExtendedWith '['ViewPatterns] l2, SameWrap 'NPlusKPatterns '['ViewPatterns] pos s l1 l2, FullyTranslatable (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] l1 l2 pos s) node) => Wrap l1 pos s (node l1 l1 (Wrap l1 pos s) (Wrap l1 pos s)) -> Wrap l1 pos s (node l2 l2 (Wrap l1 pos s) (Wrap l1 pos s))
- dropNoListTuplePuns :: forall l1 l2 node pos s. (Haskell l2, FullyTranslatable (ReformulationOf (Off 'ListTuplePuns) ('[] :: [ExtensionSwitch]) l1 l2 pos s) node) => Wrap l1 pos s (node l1 l1 (Wrap l1 pos s) (Wrap l1 pos s)) -> Wrap l1 pos s (node l2 l2 (Wrap l1 pos s) (Wrap l1 pos s))
Documentation
data ReformulationOf (e :: ExtensionSwitch) (es :: [ExtensionSwitch]) λ l pos s Source #
Transformation to reformulate code from language λ
using extension e
to language l
using extensions es
Instances
type Wrap l pos s = WithEnvironment l (Wrapped pos s) Source #
The same node wrap is used by both the original and target language.
dropRecordWildCards :: forall l1 l2 node pos s. (Haskell l2, ExtendedWith '['NamedFieldPuns] l2, SameWrap 'RecordWildCards '['NamedFieldPuns] pos s l1 l2, FullyTranslatable (ReformulationOf (On 'RecordWildCards) '[On 'NamedFieldPuns] l1 l2 pos s) node) => Wrap l1 pos s (node l1 l1 (Wrap l1 pos s) (Wrap l1 pos s)) -> Wrap l1 pos s (node l2 l2 (Wrap l1 pos s) (Wrap l1 pos s)) Source #
Eliminate the RecordWildCards
extension and replace it with NamedFieldPuns
.
dropNPlusKPatterns :: forall l1 l2 node pos s. (Haskell l2, ExtendedWith '['ViewPatterns] l2, SameWrap 'NPlusKPatterns '['ViewPatterns] pos s l1 l2, FullyTranslatable (ReformulationOf (On 'NPlusKPatterns) '[On 'ViewPatterns] l1 l2 pos s) node) => Wrap l1 pos s (node l1 l1 (Wrap l1 pos s) (Wrap l1 pos s)) -> Wrap l1 pos s (node l2 l2 (Wrap l1 pos s) (Wrap l1 pos s)) Source #
Eliminate the NPlusKPatterns
extension and replace it with ViewPatterns
.
dropNoListTuplePuns :: forall l1 l2 node pos s. (Haskell l2, FullyTranslatable (ReformulationOf (Off 'ListTuplePuns) ('[] :: [ExtensionSwitch]) l1 l2 pos s) node) => Wrap l1 pos s (node l1 l1 (Wrap l1 pos s) (Wrap l1 pos s)) -> Wrap l1 pos s (node l2 l2 (Wrap l1 pos s) (Wrap l1 pos s)) Source #
Eliminate the NoListTuplePuns
extension.