If I had my way

Jonathan M Davis jmdavisProg at gmx.com
Mon Dec 12 13:55:04 PST 2011


On Monday, December 12, 2011 19:48:11 F i L wrote:
> My biggest disappointment was(/is) with the lack of the alleged
> Pseudo Methods (section 5.9.1). It's one thing to play around
> with a language you understand is growing and under development.
> It's another to boast about the language to your co-workers, only
> to receive unexpected errors when they ask for demonstrations :/
> Bad for publicity, that.

I think that that section was not clear enough. Calling free functions as if 
they were member functions on a type works with arrays and has only ever 
worked with arrays. TDPL doesn't actually say that it works with anything 
other than arrays. It talks about adding them to built-in types and 
specifically talks about arrays, but it's not particularly clear about anything 
other than arrays. My guess is that it was never intended to mean anything 
other than arrays, but I don't know. Only Andrei would know that.

There has been discussion of UFCS (universal function call syntax), which 
would then expand that beyond arrays to _all_ types - int, float, any user-
defined type, etc. However, there are a number of issues with that 
(particularly with user-defined types; e.g. what if a member function and a 
free function have the same name?), and it has yet to be implemented. It may 
never be implemented.

So, I think that there's a decent chance that you just misunderstood what that 
section in TDPL was really saying (it really should be clearer on whether it 
meant just arrays or all types), but there are definitely folks who want it to 
be extended to all types, so it may be eventually, but we'll have to wait and 
see.

- Jonathan M Davis


More information about the Digitalmars-d mailing list