The "Dao.Prelude" module has gone out of date to the point where it may as well be completely re-written. Too many changes have been made to the rest of the code base. However many of these changes were inspired by the lessons learned from the very practical functions I had implemented in the "Dao.Prelude" before, so not all has been lost.
I have started writing the instances for the new 'Dao.Object.ToDaoStructClass', and I am almost done. Unlike the 'Dao.Struct.Structured' class, there is much less inter-dependency between data types being instantiated, owing to the fact that the new reference model uses untyped values. I have also renamed the 'Dao.Evaluator.ObjectValue' class to the 'Dao.Evaluator.ObjectClass' because this is more in line with what it is -- the class of types that can be used as Objects in the Dao runtime. The class that was previously called ObjectClass has been renamed to 'Dao.Evaluator.HaskellDataClass', which is a name more true to it's purpose: to provide an interface between the Dao runtime and Haskell data types via the 'Dao.Evaluator.ObjectInterface' data type and to store this data type with the object values in the 'Dao.Evaluator.HaskellData' data type. Now any object that instantiates 'Dao.Evaluator.HaskellData' will also be made to instantiate 'Dao.Evaluator.ObjectClass', and the 'Dao.Evaluator.new' and 'Dao.Evaluator.objFromHaskellData' functions provide the shortcuts to do this.

Also, I have been updating the 'Dao.Object.ToDaoStruct' and 'Dao.Object.FromDaoStruct' APIs as I to satisfy the many practical necessities I have encountered while writing instances for the 'Dao.Object.ToDaoStructClass'. More changes will be made as I begin to instantiate every important data type into the 'Dao.Object.FromDaoStruct' class.

Finally, I should note that the 'Dao.Object.ToDaoStructClass' and 'Dao.Object.FromDaoStructClass' classes have been modified so they are instantiated directly using the 'Dao.Object.ToDaoStruct' and 'Dao.Object.FromDaoStruct' monads (respectively), there is no need to evaluate the monadic functions to simplified 'Dao.Predicate.Predicate' functions. Also, the names of the member functions of these classes have been changed to be much more intuitive. The function to evaluate functions of the 'Dao.Object.ToDaoStruct' and 'Dao.Object.FromDaoStruct' monads are now simply just 'Dao.Object.fromData' and 'Dao.Object.toData' respectively.