I'll be using the word `specification' in an informal sense that I
hope is clear from context.


A /category/ is a collection of specifications.  A /domain/ is a
collection of implementations.  An /object/ is any computational
values in an OpenAxiom program.  An object has a representation given
by a domain.  An object /o/ is said to have type 'd' if 'd' implements
the reprsentation for the object /o/. 

A category constructor is a category-valued function, defined with
the term 'Category' as its return type.  
A domain constructor is a domain-valued function, defined with a 
category as its return type.

Category contructors and domain constructors may be parameterized by
domains and categories.   Furthermore, domains and categories have
runtime representations, e.g. they are reflected as objects in
OpenAxiom.  In particular, domains objects have type 'Domain', and 
category objects have type 'Category'.  And 'Domain' and 'Category'
are indeed domains, because they implement specifications and provide
object representations.


I did not discuss the notion of /package/, as it is almost like
a domain -- it implements specifications -- except that it does not
provide object representation.

-- Gaby

-------------------------------------------------------------------------
Sponsored by: SourceForge.net Community Choice Awards: VOTE NOW!
Studies have shown that voting for your favorite open source project,
along with a healthy diet, reduces your potential for chronic lameness
and boredom. Vote Now at http://www.sourceforge.net/community/cca08
_______________________________________________
open-axiom-devel mailing list
open-axiom-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/open-axiom-devel

Reply via email to