In creating one of my test programs, I realized there is no way to select branches of 'Dao.Rule.Rule' evaluation according to any degree measuring how well a 'Dao.Rule.Rule' has matched the 'Dao.Rule.inputQuery'. I have modified the 'Dao.Rule.Rule' monad to now make use of a 'Dao.Rule.QueryState' data type which not only contains the 'Dao.Rule.Query' but keeps a 'Dao.Rule.queryScore' value indicating how many items in the 'Dao.Rule.queryInput' have matched so far. This will allow for further fine-tuning of 'Dao.Rule.Rule' evaluation. I was thinking I might hide the details of score keeping, and instantiate 'Dao.Rule.Rule' into 'Control.Monad.State.Class.MonadState' such that only the 'Dao.Rule.Query' can be accessed, but this will require creating a separate constructors in the 'Dao.Rule.Rule' data type that specifically perform the task of 'Dao.Rule.resetScore'. I will sleep on it before writing any more code.
In creating one of my test programs, I realized there is no way to
select branches of 'Dao.Rule.Rule' evaluation according to any degree
measuring how well a 'Dao.Rule.Rule' has matched the
'Dao.Rule.inputQuery'. I have modified the 'Dao.Rule.Rule' monad to
now make use of a 'Dao.Rule.QueryState' data type which not only
contains the 'Dao.Rule.Query' but keeps a 'Dao.Rule.queryScore' value
indicating how many items in the 'Dao.Rule.queryInput' have matched so
far. This will allow for further fine-tuning of 'Dao.Rule.Rule'
evaluation. I was thinking I might hide the details of score keeping,
and instantiate 'Dao.Rule.Rule' into
'Control.Monad.State.Class.MonadState' such that only the
'Dao.Rule.Query' can be accessed, but this will require creating a
separate constructors in the 'Dao.Rule.Rule' data type that
specifically perform the task of 'Dao.Rule.resetScore'. I will sleep
on it before writing any more code.

printedheart/Dao