Lambda (was: Refactoring in Tunes)
Thu, 20 Jan 2000 22:30:45 -0800

> From: Jim Little []
> Subject: Re: Lambda (was: Refactoring in Tunes)

> wrote:
> > No, I don't know that -- in fact, I disagree stridently 
> > with it.  A computer
> > language is nothing BUT a UI.  It's an interface between 
> > the programmer and
> > the machine.

> I think what Laurent is getting at here is that the syntax of the
> language can be separated from the semantics of the language.

This statement makes sense from a certain point of view.  I have recently
come to take a different point of view -- I don't talk so much about the
"semantics" versus the "syntax" of the language (unless the language
deliberately limits its own semantics, of course); rather, I talk about the
syntax of the language and the semantics of the machine it's running on.

> I think
> Laurent's further point is that type annotations do not affect the
> semantics of the language, and thus they shouldn't be a part 
> of the core
> language.  However, they are useful, so they should be a "standard"
> extension.

I'm not overly offended by that :-).  It seems like an utter and complete
waste of time for everyone involved, but it's not offensive.  For whom would
it save effort?  Whose problem is it solving?

> When you think of having multiple syntaxes that are related to but
> separate from the semantics of the language, it all starts to make
> sense: most syntaxes could support the standard type annotation
> extension in whatever way is most useful, but for those 
> implementations
> that are highly constrained, the annotation could be left out.

Anyone can write a language for my (nonexistant) VM, so that's true.  They
can even use the language I provide to hitch a ride, thus resulting in a
very similar language.

However, at no point would the annotation be left out of a program written
in my language -- because those annotations are a part of the language.  In
an implementation which didn't want to perform typechecking, those
annotations would be treated as comments.

> At least, that's my take on it.  I think separating semantics from
> syntax (what Laurent calls "UI") is a very good approach, and I also

I agree, but remember that a language is nothing aside from its syntax and
its libraries.

> think identifying a core set of semantics with optional
> semantically-null standard extensions is also a good 
> approach.

Hmm.  I prefer a single definition for each language.

> (But I'm
> biased, because that's the approach I'm enabling with the Prism
> metacode. :) )


> Jim

> (The Prism metacode is described at

I've read it.  Fun.