Aucbvax.5036
fa.editor-p
utzoo!decvax!ucbvax!editor-people
Mon Nov  9 17:17:40 1981

>From RMS@MIT-AI Mon Nov  9 16:43:23 1981
Union types do not suffice for writing MEMBER.

They may be appear to be sufficient, if you look at a single program
rather than at changing the program.  But MEMBER is supposed to work
on any type which does or EVER WILL exist.  It should not be necessary
to alter the definition of MEMBER and 69 other functions, or even to
recompile them, every time a new type is added.

The only way to avoid this is if the system allows new alternatives to
be added to a previously defined union type.  And this must have the
effect of causing all variables, functions and structures previously
declared using the union type to accept the new alternatives, without
the user's having to know what variables, functions or structures they
are.  Then you can define a union type called EVERYTHING and add all
new types to that union.  But then the system should save you trouble
and automatically add all new types to the union EVERYTHING.
This is tantamount to permitting you not to declare the type.

External variables are vital for extensible systems.  A demonstration
of this is in my EMACS paper, AI memo 519a.

Beliefs such as that type declarations are always desirable, and that
external variables should be replaced by explicit parameters, and that
it is good to control where a function can be called from, are based
on a static way of looking at a program.  There is only one program
being considered, and the goal is to express that one program in the
clearest possible manner, making all errors (in other words, all
changes!) as difficult as possible.  Naturally, mechanisms that
incorporate redundancy are used for this.

The extensible way of thinking says that we want to make it as easy as
possible to get to as many different useful variations as possible.
It is not one program that we want, but options on many programs.
Taking this as a goal, one reaches very different conclusions about
what is good in a programming language.  It looks less like ADA and
more like Lisp.

It is no coincidence that "computer scientists" have been using the
static view in designing their languages.  The research has been
sponsored for the sake of military projects for which that viewpoint
may be appropriate.  But it is not appropriate for other things.
An editor designed to be reliable enough to be "man-rated" is a waste
of effort; and if this unnecessary feature interferes with
extensibility, it is actually harmful.

-----------------------------------------------------------------
gopher://quux.org/ conversion by John Goerzen <[email protected]>
of http://communication.ucsd.edu/A-News/


This Usenet Oldnews Archive
article may be copied and distributed freely, provided:

1. There is no money collected for the text(s) of the articles.

2. The following notice remains appended to each copy:

The Usenet Oldnews Archive: Compilation Copyright (C) 1981, 1996
Bruce Jones, Henry Spencer, David Wiseman.