HaRe-0.6: tools/base/AST/OldBaseSyntax.hs
module OldBaseSyntax where
import BaseSyntax
-- For backwards compatibility -------------------------------------------------
type E = EI HsName
type HsField e = HsFieldI HsName e
mapE :: (e1 -> e2) ->
(p1 -> p2) ->
(d1 -> d2) ->
(t1 -> t2) ->
(c1 -> c2) ->
EI i e1 p1 d1 t1 c1 ->
EI i e2 p2 d2 t2 c2
mapE = mapEI id
seqE :: (Monad m,Functor m) =>
E (m e) (m p) (m ds) (m t) (m c) ->
m (E e p ds t c)
seqE = seqEI . mapEI return id id id id id
accE :: (e -> b -> b) ->
(p -> b -> b) ->
(d -> b -> b) ->
(t -> b -> b) ->
(c -> b -> b) ->
EI i e p d t c ->
b ->
b
accE = accEI (const id)
type P p = PI HsName p
mapP :: (p1 -> p2) ->
PI i p1 ->
PI i p2
mapP = mapPI id
seqP :: (Monad m,Functor m) => PI i (m p) -> m (PI i p)
seqP = seqPI . mapPI return id
type D = DI HsName
type HsMatch = HsMatchI HsName
type HsConDecl = HsConDeclI HsName
mapD :: (e1 -> e2) -> -- expression recursion function
(p1 -> p2) -> -- pattern recursion function
(d1 -> d2) -> -- declaration recursion function
(t1 -> t2) -> -- type recursion function
(c1 -> c2) -> -- context recursion function
(tp1 -> tp2) -> -- type pattern recursion function
DI i e1 p1 d1 t1 c1 tp1 -> -- old declaration structure
DI i e2 p2 d2 t2 c2 tp2 -- new declaration structure
mapD = mapDI id
type T t = TI HsName t
type HsIdent = HsIdentI HsName
type HsModule = HsModuleI HsName
type HsExportSpec = HsExportSpecI HsName
type HsImportDecl = HsImportDeclI HsName
type HsImportSpec = HsImportSpecI HsName