On Tuesday, October 28, 2014 08:15:44 Russel Winder via Digitalmars-d wrote:
I need to know the community view on D idiom regarding UFCS in one particular case (mostly because I am doing a presentation and need to
know which one to put on the slides).

Given:

  import std.concurrency: Tid, send

and some code that spawns, then in a spawned task should I write:

  parent.send(result)

or:

  send(parent, result)

as being idiomatic D code?

This has all the appearance of a potential troll, but that is not my
intention, I really do need to know which the community feels is
idiomatic D.

I don't see how it matters much. Both are perfectly valid. Plenty of folks like UFCS, but it doesn't get used everywhere. The primary, technical benefit of UFCS (aside from pure personal preference) is that in generic code, it allows for member functions to override the more generic free functions and specialize their behavior. Code that wants that should use UFCS. Code that doesn't want that, should avoid UFCS. Also, code that needs to disambiguate between free functions (due to conflicting imports) needs to either avoid UFCS or use aliases to get around the conflict. For all other code, it's a matter of personal preference. I'd say that the only thing that makes UFCS more D-like beyond that is simply the fact that most other languages can't do it (especially D's primary competitors), but that isn't really a technical
benefit so much as something that's simply different about D.

- Jonathan M Davis

Reply via email to