Recursive types again, structs library

Posted on Sun Sep 4, 2016

More work in the master branch of Vicare. I have bumped the version number of the library (vicare) to (0 4 2016 9 4).

More errors emerged in the implementation of recursive types, I think I fixed them. However, testing continues: I am porting some old libraries from the Nausicaa hierarchy to the typed language.

Everything I discuss here is relative to code in the head of the master branch.

More system libraries

When defining a new data type, disjoint from all the other types, we should really use record–types; the use of structs should be limited to special cases. Structs have no inheritance and there is really little difference between a record–type with no parent and a struct–type. For this reason I created the library (vicare system structs), which exports the syntactic bindings related to structs in place of (vicare).

Other libraries now exist to export syntactic bindings that are used internally but should no be used directly by normal user code. For example (vicare system comparison-procedures) and (vicare system type-descriptors). More such libraries will come into existence in future, to partition the big number of syntactic bindings exported today by (vicare).