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.
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