login  home  contents  what's new  discussion  bug reports     help  links  subscribe  changes  refresh  edit

Edit detail for SandboxTypeDefinitions revision 9 of 15

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
Editor: hemmecke
Time: 2008/07/08 11:27:54 GMT-7
Note: Why Type is not an Aldor-domain?

added:

From hemmecke Tue Jul 8 11:27:54 -0700 2008
From: hemmecke
Date: Tue, 08 Jul 2008 11:27:54 -0700
Subject: Why Type is not an Aldor-domain?
Message-ID: <20080708112754-0700@axiom-wiki.newsynthesis.org>
In-Reply-To: <20080708090117-0700@axiom-wiki.newsynthesis.org>

I simply have not found an explicit statement in the AUG that says that
'Type' and 'Category' are domains. How else could I claim that they are?

And regardless of what others say, could you give *your* definitions similar
to what I started at the beginning of this page? Let's first collect the status,
before we argue, what implications it would have if 'Type' would be a domain.

Maybe in the end it doesn't matter whether or not 'Category' and 'Type' are domains.

There seems to be different understandings of Type, domain, category, Category, etc. around. Here is an attempt to collect all these different opinions in order to make discussion about them clearer.

Definitions of Ralf Hemmecke

A category is an L-type whose type is the language-defined constant Category.

A domain is an L-type whose type is a category.

An L-type is either a category, a domain or the language-defined constants Category and Type.

Any L-type is of type Type.

I wrote L-type to mean type in the language, either Aldor or SPAD.

Each value belongs to ... its domain --Bill Page, Tue, 08 Jul 2008 06:53:30 -0700 reply
In

Stephen Watt wrote:
The type system has two levels: Each value belongs to some unique type, known as its domain, and the domains of expressions can be inferred statically. Each domain is itself a value belonging to the domain Type. Domains may additionally belong to some number of subtypes (of Type), known as categories. Categories can specify properties of domains such as which operations they export, and are used to specify interfaces and inheritance hierarchies.
 
The biggest difference between the two-level domain/category model and the single-level subclass/class model is that a domain is an element of a category, whereas a subclass is a subset of a class. This difference eliminates a number of problems in the definition of functions with multiple related arguments.

The Aldor User Guide says... --hemmecke, Tue, 08 Jul 2008 07:26:33 -0700 reply
In Section 7.2 of the AUG is written:

  • A domain is a type which defines a collection of exported symbols. The symbols may denote types, constants and functions. Many domains also define an interpretation for data values, called a representation type; these domains are also known as abstract data types. Those domains which are not abstract datatypes are called packages.
  • A category is a type which specifies information about domains, including the specification of the public interface to a domain, which consists of a collection of declarations for those operations which may be used by clients of the domain.

That conflicts the above statement that Type is a domain, but is in line with the two-level domain/category model.

See also Sections 7.8 (Domains) and 7.9 (Categories) of the Aldor User Guide.

I haven't (yet) found a sentence that says that Type or Category are domains.

Aldor Users Guide, chapter 7 --Bill Page, Tue, 08 Jul 2008 07:33:36 -0700 reply
Section 7.5 Subtypes

Every value in Aldor is a member of a unique domain which determines the interpretation of its data.

Section 7.9 Categories

All type values have ``Type'' as their unique base type. As with all other values, it is the unique base type which determines how values are to be represented.

The language allows categories to be treated as normal values and allows names to refer to categories. A category (by definition) is a value of the Aldor built-in type Category.

Type is a type but not a domain --hemmecke, Tue, 08 Jul 2008 07:52:27 -0700 reply
I have nothing against Type being a type. But Type is not an Aldor-domain. Maybe it is a domain in a broader sense, but that sense is only vaguely defined, if at all. I would like not to use domain and type interchangeably.

Re: Type is not an Aldor-domain? --Bill Page, Tue, 08 Jul 2008 09:01:17 -0700 reply
The fact that Type is a domain certainly does not make domain and type interchangeable. Objects of the domain Type are themselves either domains or categories, so type and domain are still not interchangeable since categories are not domains.

Could you explain why you claim that "Type is not an Aldor-domain". Is this only a personal preference? To me: "If it talks like a duck and it looks like a duck, its a duck...". In this case the compiler output, the library definitions, and quotations from the primary developer all agree:

  Type has with {};

returns true.

Why Type is not an Aldor-domain? --hemmecke, Tue, 08 Jul 2008 11:27:54 -0700 reply
I simply have not found an explicit statement in the AUG that says that Type and Category are domains. How else could I claim that they are?

And regardless of what others say, could you give your definitions similar to what I started at the beginning of this page? Let's first collect the status, before we argue, what implications it would have if Type would be a domain.

Maybe in the end it doesn't matter whether or not Category and Type are domains.