Arbitrary abbreviations in phobos considered ridiculous
H. S. Teoh
hsteoh at quickfur.ath.cx
Fri Mar 9 16:10:15 PST 2012
On Fri, Mar 09, 2012 at 06:50:50PM -0500, bearophile wrote:
> Jonathan M Davis:
>
> > I don't know what the current state of UFCS is.
>
> I have found a possible problem in it, and probably there are some
> missing parts, but it's working well.
I found that x.foo doesn't work, it needs to be x.foo(). But we're
deprecating omission of parentheses of non- at property functions anyway,
and an external function can hardly be a @property of anything, so I
don't think this needs to be fixed.
> At first I didn't like it a lot because it's cheap syntax sugar that
> adds no new power and gives programmers more freedom to write
> different-looking versions of the the same code (and this is often
> bad).
But it also allows you to write pseudo-members for generic templates
that want to access built-in types via some abstract interface. This
makes template code much much cleaner.
> But I have soon found that it's able to make functional-style code
> more readable, because you write:
> x.foo().bar().baz().spam()
>
> Instead of this, where my eye sometimes loses count of the nesting level:
> spam(baz(bar(foo(x))))
[...]
Personally, I find the chained syntax rather jarring if the object of
each . is different. I'm OK with things like jQuery where the base
object is always the same, but if it changes across the .'s, it can get
confusing to read.
OTOH, this is a refreshing change from centuries of silly backwards
function notation that we inherited from math, so maybe this is a good
thing after all. :-)
T
--
Always remember that you are unique. Just like everybody else. -- despair.com
More information about the Digitalmars-d
mailing list