Now that I have a better mechanism to define objects in Haskell that can be used in Dao scripts, I am going to try to cut-down the number of primitive object types to a bare minimum. Right now, the bare minimum includes 'Dao.Object.ONull', 'Dao.Object.OTrue', 'Dao.Object.OInt' storing 'Prelude.Int' instead of 'Data.Int.Int64' like it was before, 'Dao.Object.OString' containing 'Dao.String.UStr's, 'Dao.Object.ORef' containing 'Dao.Object.Reference's (references not qualified with keywords like "global" or "static"), 'Dao.Object.OChar' containing 'Data.Char.Char's, 'Dao.Object.OAbsTime' (formerly 'Dao.Object.OTime') containing absolute date/time values 'Data.Time.UTCTime', 'Dao.Object.OList' containing lists of 'Dao.Object.Object's, 'Dao.Object.OTree' containing 'Dao.Tree.Tree's mapping 'Dao.String.UStr's to 'Dao.Object.Object's, and 'Dao.Object.OBytes' containing 'Data.ByteString.Lazy.ByteString's. I debated whether or not to exclude absolute and relative date/times, but one of my guiding principles is that Dao is for artificial intelligence, and good AI should probably have an "instinctive knowledge" of time. I also debated whether or not to include 'Dao.Object.OPair' because it is useful to iterating over data structures like dictionaries, but since dictionaries are no longer primitive types, and I think it might be better to provide a more flexible "tuple" type, I have removed 'Dao.Object.OPair'.
Now that I have a better mechanism to define objects in Haskell that can be used in Dao scripts, I am going to try to cut-down the number of primitive object types to a bare minimum. Right now, the bare minimum includes 'Dao.Object.ONull', 'Dao.Object.OTrue', 'Dao.Object.OInt' storing 'Prelude.Int' instead of 'Data.Int.Int64' like it was before, 'Dao.Object.OString' containing 'Dao.String.UStr's, 'Dao.Object.ORef' containing 'Dao.Object.Reference's (references not qualified with keywords like "global" or "static"), 'Dao.Object.OChar' containing 'Data.Char.Char's, 'Dao.Object.OAbsTime' (formerly 'Dao.Object.OTime') containing absolute date/time values 'Data.Time.UTCTime', 'Dao.Object.OList' containing lists of 'Dao.Object.Object's, 'Dao.Object.OTree' containing 'Dao.Tree.Tree's mapping 'Dao.String.UStr's to 'Dao.Object.Object's, and 'Dao.Object.OBytes' containing 'Data.ByteString.Lazy.ByteString's. I debated whether or not to exclude absolute and relative date/times, but one of my guiding principles is that Dao is for artificial intelligence, and good AI should probably have an "instinctive knowledge" of time. I also debated whether or not to include 'Dao.Object.OPair' because it is useful to iterating over data structures like dictionaries, but since dictionaries are no longer primitive types, and I think it might be better to provide a more flexible "tuple" type, I have removed 'Dao.Object.OPair'.