This is the mail archive of the kawa@sourceware.cygnus.com mailing list for the Kawa project. See the Kawa home page for more information.


[Date Prev][Date Next][Thread Prev][Thread Next]
[Date Index] [Subject Index] [Author Index] [Thread Index]

Re: type specifiers for local variables



Harold Carr <carr@fast.cs.utah.edu> wrote:
> The "rule" that I follow is: always use a list form when introducing
> new syntax.  That way programs are still easily manipulated as data so
> people can define their own syntax with macros.

I don't understand this point.  Using (let ((var :: type val)) body)
seems to be just as valid data as (let (((var type) val)) body).
There is a theoretical ambiguity as to whether :: is an identitier
or syntax, but we have the same problem with => or else.

> I "vote" for the "extra parentheses"...

Oh dear, the vote seems to be going against me.  I hate to
"pull rank" and out-vote you all, but I think I will anyway.
It is important to me that type-specifiers can be used with
define, and the extra parentheses don't allow that.

I will also point out that the extra parentheses is sensitive to
ambiguity with other extensions.  For example suppose someone
has code using an extension to allow:
	(let (( (f x) fbody)) body)
as syntactic sugar for:
	(let ((f (lambda (x) fbody))) body)
by analogy with what define allows ...

I was very glad to see this discussion.  It shows that people
care about the way Kawa is being designed.

	--Per Bothner
Cygnus Solutions     bothner@cygnus.com     http://www.cygnus.com/~bothner