[Prev][Next][Index][Thread]

Re: C# is not Dylan (was: Re: C# : The new language from M$)



Neel Krishnaswami wrote:

> Jeff Dalton <jeff@aiai.ed.ac.uk> wrote:
> > Neel Krishnaswami wrote:
> > 
> > > Dylan plus its special forms is substantially less complex
> > > than Common Lisp and its special forms.
> > 
> > Do you really mean special forms, i.e. omitting all the macros?
> 
> Yes, except for reader macros, which I regard as (partially) defining
> the lexical structure of Lisp. There's a whole host of surprisingly
> complex special forms (eg, TAGBODY/GO) ...

You may well be right about the grammar size, I don't know.  But
there aren't a host of special forms, let alone a host of complex
ones, and tagbody is not very complex.  Of course it depends on
where you draw the line between syntax and semantics, but in the
usual way this is done for CL, the syntax of a tagbody is:

  (TAGBODY {tag | statement}*)

A tag is an integer or a symbol, and statement is pretty simple if you
have an "except for" notation.

> I mostly intended this as a mild challenge to a piece of common
> wisdom.

Fair enough.  Still, even Common Lisp (far from the simplest Lisp)
is free of a number of syntactic issues that affect programmers using
other languages.

There's also a kind of two-level conceptualisation of the syntax:
sequences of characers -> data structires, and then it's largely
a matter of the sequence and grouping of list elements.  This helps
make the syntax seem simpler.

That said, the Dylan designers have made the syntax fairly regular,
with a kind of pattern that things fit into; and, as in Lisp, many
things can be defined as macros.

-- Jeff