Bug fix: I had recently re-written the 'Dao.Glob.matchTree' algorithm, but I had not tested it. I wrote a brief test program and got it working. I also re-defined some of the class instantiation in a way that I thought made more sense. While I was at it, I also made the 'Dao.Glob.matchTree' algorithm more efficient.

I also realized that the instance of 'Dao.Glob.Glob' for 'Prelude.Read' was programmed to cluster all sub-strings that are not 'Wildcard's into one large 'Dao.Glob.Single' string constant, spaces, punctuation, and all. Since 'Glob's are polymorphic over string constants, I thought I would be able to break-down large string constants into smaller ones by defining a newtype string that instantiated 'Prelude.Read' in such a way that it could produce multiple string constants. But I now realize that the data type of 'Dao.Glob.Glob' and 'Prelude.Read.readsPrec' does not allow for this, a 'Prelude.Read' parser cannot return multiple string constants or it evaluates to an exception if it does. To solve this problem, I introduced that 'parseOverSingles' function to convert a 'Glob' constructed by a 'Prelude.Read' parser.
Changed the .ghci file so the language extensions flags match the flags used to compile.
Added a 'Dao.String.simpleTokenizer' to the "Dao.String" module. This will be the default tokenizer if any other kind of tokenizer is not specified in the Dao script.
I changed the type of string constant in the 'Dao.Glob.Glob' expressions used throughout the evaluator from 'Dao.String.UStr' to 'Dao.Evaluator.Object'. This means arbitrary Dao object values can be used to match to strings. Since 'Dao.Evaluator.Object's can overload the equality function, non-string values can be programmed to be used in rule expressions as well.

Therefore I have moved the 'FuzzyStr' type from "Dao.Glob" to "Dao.Evaluator": this type will be made a built-in type so fuzzy string matching can be implemented as soon as it becomes possible to define which function to use for string tokenizing. This has not been implemented yet.

I have restored the 'Dao.Evaluator.programTokenizer' to the 'Dao.Evaluator.ExecUnit' data structure, but unlike before it is now a 'Dao.Evaluator.Object'. The 'Dao.Evaluator.programTokenizer' will need to be set on execution of the 'Dao.Evaluator.Program' data type, but this has not been done yet, nor have the functions which tokenize rules and input strings been made to use anything other than 'Dao.String.simpleTokenizer'.

Also, I fixed a few bugs in the "Dao.Glob" module I had not caught yesterday.