MonadLab 0.0 → 0.0.1
raw patch · 4 files changed
+41/−27 lines, 4 files
Files
- MonadLab.cabal +9/−10
- MonadLab/CommonTypes.hs +24/−15
- README +0/−2
- RELEASE-NOTES +8/−0
MonadLab.cabal view
@@ -1,5 +1,5 @@ Name: MonadLab-Version: 0.0+Version: 0.0.1 Synopsis: Automatically generate layered monads Category: Monads @@ -19,7 +19,7 @@ examples/InterpC.hs, examples/InterpD.hs, examples/InterpMonadA.mlab, examples/InterpMonadB.mlab, examples/InterpMonadC.mlab, examples/InterpMonadD.mlab,- README+ README, RELEASE-NOTES Data-Files: MLabCompileStub.hs, mlab.sh @@ -32,13 +32,12 @@ Build-Depends: base Build-Depends: parsec Build-Depends: template-haskell- Exposed-Modules: MonadLab.MonadLab, MonadLab.CommonTypes,- MonadLab.MLabParser, MonadLab.TypeParser,- MonadLab.Reduction, MonadLab.Writer,- MonadLab.Identity, MonadLab.Io,- MonadLab.IoList, MonadLab.ListIo,- MonadLab.List, MonadLab.State,- MonadLab.Env, MonadLab.Error,- MonadLab.Cont, MonadLab.Run,++ Exposed-Modules: MonadLab.MonadLab, MonadLab.CommonTypes, MonadLab.MLabParser++ Other-Modules: MonadLab.TypeParser, MonadLab.Reduction, MonadLab.Writer,+ MonadLab.Identity, MonadLab.Io, MonadLab.IoList,+ MonadLab.ListIo, MonadLab.List, MonadLab.State,+ MonadLab.Env, MonadLab.Error, MonadLab.Cont, MonadLab.Run, MonadLab.Declarations }
MonadLab/CommonTypes.hs view
@@ -92,12 +92,9 @@ -- | The monad type. Each component contains abstract -- syntax of the Haskell code to implement the monad. -type Monad = ( MonadTypeCon -- ^ Code for the data type - , ReturnExpQ -- ^ Code for the return- , BindExpQ -- ^ Code for the bind- , [LayerNPM] -- ^ Code for the non-proper morphisms- , LiftExpQ -- ^ Code for base monad lifting- )+-- Components are (code for the data type, code for the return, code for the+-- bind, code for the non-proper morphisms, code for the monad lifting)+type Monad = (MonadTypeCon, ReturnExpQ, BindExpQ, [LayerNPM], LiftExpQ) -- | The name of monad type constructor identifier type MonadName = String@@ -107,13 +104,25 @@ -- Data types for monad code components. -- All are type synonyms for ExpQ-type ReturnExpQ = ExpQ -- ^ Code for a monad return-type BindExpQ = ExpQ -- ^ Code for a monad bind-type LiftExpQ = ExpQ -- ^ Code for a monad lifting-type JoinExpQ = ExpQ -- ^ Code for a monad join-type RunExpQ = ExpQ -- ^ Code for a monad run (evaluation)-type NonProperMorphismExpQ = ExpQ -- ^ Code for a monad non-proper morphism +-- | Code for a monad return+type ReturnExpQ = ExpQ++-- | Code for a monad bind+type BindExpQ = ExpQ++-- | Code for a monad lifting+type LiftExpQ = ExpQ++-- | Code for a monad join+type JoinExpQ = ExpQ++-- | Code for a monad run (evaluation)+type RunExpQ = ExpQ++-- | Code for a monad non-proper morphism+type NonProperMorphismExpQ = ExpQ+ -- | Data type to hold a layer's non-proper morphisms type LayerNPM = (Layer , [NonProperMorphismExpQ]) @@ -161,6 +170,6 @@ -- | Convenience function for expressing type @t -> t'@ in TH arrow :: TypeQ -> TypeQ -> TypeQ-arrow t1 t2 = appT (appT arrowT t1) t2--+arrow t1 t2 = appT (appT (conT $ mkName "(->)") t1) t2+ -- Note the weird use of prefix notation here; this is to+ -- work around a bug in TH's pretty printer
README view
@@ -21,5 +21,3 @@ * The parser will fail if a monad specification contains nested parentheses, e.g. EnvT([(String,Int)]). You can work around this by declaring a type synonym for the type of the environment/state/etc.--* ContT is currently broken due to a bug in Template Haskell's pretty-printer.
+ RELEASE-NOTES view
@@ -0,0 +1,8 @@+0.0.1+-----+* Added workaround to bug in TH's pretty-printer that causes ContT to output+ incorrect code++* Fixed a Haddock build failure (in CommonTypes.hs)++* Hid modules that shouldn't have been exposed