On Tue, Jul 8, 2008 at 4:15 PM, Bill Page <[EMAIL PROTECTED]> wrote: > On Tue, Jul 8, 2008 at 3:06 PM, Gabriel Dos Reis wrote: >> >> 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. >> > > All this sounds great to me! :-) > >> Category contructors and domain constructors may be parameterized >> by domains and categories. > > In Axiom category and domain constructors can be parameterized by > values passed as with any other function. These include domains and > categories as values. E.g. > > DirectProductCategory(3,Float) > > I assume that you did not intend to restrict this use in OpenAxiom.
yes; I left the `parameterized by value' bit out for conciseness, not because I want to exclude DirectProductCategory, because I thought most of the recent emails seemed to be wondering about the essence of `category' and `domain'. The value parameterization bit is no restriction and also not essential to get to the essence of `categories' and `domains', IMO. > >> 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. >> > > Agreed. > >> >> 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. >> > > Right. Thanks Gaby. > > What do propose for Type? Do we ever need to be able to write? > > x:Type := Integer > > or define a constructor that takes parameters from Type? >From the `first class value' principle point of view, if you can write f(T: Type): Ring == ... then one should be able to write x: Type := ... > If so does the > domain: > > Union(Domain,Category) > > make sense? Is it too awkward? It is a domain that can hold either a domain object or a category object. -- 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