Haskell infix syntax
Jonathan M Davis
jmdavisProg at gmx.com
Sun Mar 6 16:04:57 PST 2011
On Sunday 06 March 2011 09:34:07 Adam D. Ruppe wrote:
> bearophile:
> > UFCS is a huge hack that I hope to never see in D :-)
>
> How is it a hack? I can understand there being implementation problems
> that can make it undesirable to add, but calling it hack?
>
> It's one of the most elegant syntax proposals I've ever seen! It
> unifies objects and other functions in syntax. It improves
> encapsulation by giving full support to non-member functions. It
> improves modularity for the same reason.
>
> With ufcs, there'd be no desire to add useless members due to
> object syntax. Everything is equal - easy extensibility, better
> protection, cleaner interfaces.
>
> It's the opposite of a hack.
It is _not_ a hack. Whether it's desirable or not is another matter, but it is
_not_ a hack. And really, the term hack is very imprecise and often subjective.
It's the sort of accusation that pretty much kills any legitimate debate. It's
generally unsupportable and subjective, so it adds nothing to the debate, but it
has such a stink about it that it tends to make people avoid whatever was
declared to be a hack.
Sure, you still have lots of parens with UFCS, but you _do_ get the argument
order that Bearophile was looking for. And while I've generally found the idea
of using UFCS with primitives to be pointless, this is actually an example where
it's _useful_ with primitives.
No, UFCS is not a hack. Its implementation has enough problems due to
ambiguities and the like that it may never make it into the language even if
pretty much everyone would _like_ it in the language, but it's not a hack.
- Jonathan M Davis
P.S. Entertainingly enough, www.merriam-webster.com's definition for hack doesn't
make it look bad at all:
"a usually creative solution to a computer hardware or programming problem or
limitation"
It makes me wonder if the usage of the word (and thus its common meaning) has
shifted over time or if the poor non-techy, dictionary folk just plain got it
wrong. The hacker's dictionary definition makes it look more like the typical
usage, but even it is a bit of a mixed bag in that respect:
1. /n./ Originally, a quick job that produces what is needed, but not well.
2. /n./ An incredibly good, and perhaps very time-consuming, piece of work that
produces exactly what is needed.
More information about the Digitalmars-d
mailing list