[e-lang] Proposed grammar simplifications
tribble at e-dean.com
Wed Jun 1 00:11:01 EDT 2005
Mark Miller wrote:
> David Hopwood wrote:
>> [...] "foo with= (3)" is hardly enough shorter than "foo := foo.with(3)"
>> to justify this sugar at all.
> Assuming Dean can make it work in the Antlr grammar, it looks like we
> will preserve the current ability to leave off these parens.
Right now, it looks for a paren. It needs to look ahead for a full
expression in order to correctly deal with interesting expressions on
the right hand side.
> But for the record...
I expect the verb= stuff to die eventually once we improve the
collection syntax, but also just for the record....
I happen to agree with David, and was rather hoping that the end result
would be to make the syntax go away :-) I just don't have a problem with:
vec := vec.with(0, 3)
because it's just so clear. and for example, the following is trivial
vec := vec.with(0, 3).with(1, "hello")
If we really want syntactic support, here's a quick suggestion that I
think is a better approach than the verb= stuff, because it helps in
more situations than mere assignment (which one should generally be
vec := vec[0 => 3]
vec := vec[0 => 3, 1 => "hello"]
This syntax would then help support many other scenarios:
newMsg := msg["Subject" => "Please review"]
return params["cookie" => computedCookie]
>> How frequent are cases like "bar with= (key, value)"?
> We hope to encourage a style of programming with mutable variables
> holding immutable collections, rather than immutable variables holding
> mutable collections. Should this style actually catch on, the above
> case would be quite common. In fact, the desire to support the
> immutable-collection style was exactly the motivating case for
> introducing the verb= syntax in the first place.
Without real examples (and I mean substantial chunks of code),
motivating any syntax is hard. My expectation is that once we compare
interesting chunks of code written with no syntax enhancements, "verb=",
and a TBD syntax for expressing modified collections, the latter will
win, and the no-syntax style will be generally better than the verb=
style. I'm happy to wait for such an example before spending too much
time on this :-)
More information about the e-lang