Modified the "Dao.EnumSet" module such that 'Dao.EnumSet.EnumSet' is now a container object that instantiates 'Data.Monoid.Monoid' and 'Control.Monad.Monad'. This required a fairly major rewrite, but now that it is a container it will be much more useful. I intend to phase-out many of the currently exported functions that allow you to manipulate 'Dao.EnumSet.Segment's now as they should no longer be necessary.
I am getting ready to overhaul my strategy for defining tokenizers. Before I had assumed that token types would always be defined as a data type that derives an instance of the 'Prelude.Enum' class.  However I have noticed that it requires a lot of work to define keywords and operators because there must exist a conversion function between the token type and the keyword/operator types. My new token typing strategy will involve a set of functions for constructing token types from 'Prelude.String's.  Furthermore, I intend to define a new high-level tokenizer monad "Regex". "Regex" will to 'Dao.NewParser.GenLexer' what 'Dao.NewParser.GenParser' is to 'Dao.NewParser.TokStream' -- a high-level, lazy data structure easily composable with 'Data.Monoid', 'Control.Monad', and 'Control.Applicative.Applicative', but will really be used to construct a lower-level 'Dao.NewParser.GenLexer' monad. This will hopefully solve my current problem of rather bulky, difficult-to-debug lexers.
I have eliminated everything old to make way for the new. A lot has changed in the "NewParser" module since last week.