Does D have too many features?

foobar foo at bar.com
Mon Apr 30 03:05:07 PDT 2012


On Sunday, 29 April 2012 at 19:30:24 UTC, Nick Sabalausky wrote:
> "deadalnix" <deadalnix at gmail.com> wrote in message
> news:jnhopd$gi3$1 at digitalmars.com...
>>
>>  - out arguments. We can return tuples, out argument is going 
>> backward in history.
>
> You can overload on out parameters. You can't overload on 
> return type. So
> without "out" making an optional output param would be harder 
> to make and
> uglier to use. That could be even more of a problem if the out 
> param in
> question is expensive to compute.
>
> Also, out is nice when interfacing with C. Returning tuples 
> wouldn't help
> here.
>
> I do agree that maybe we should *prefer* returning tuples over 
> out params
> (at least once we kill off the useless comma operator and have 
> a concise
> built-in syntax for tuples), but I don't think tuples are 
> enough to replace
> out entirely.

Well the functional way would be to use Option types as in:
Tuple!(int, Option!ExpensiveType) foobar(bool cond) {
   if (cond) return tuple(0, newExpensiveType());
   else return tuple(-1, Option.None);
}

I prefer the above as it's more readable IMO (we REALLY should 
get a much better tuple syntax though ....)
I do agree that this won't work when interfacing with C but IMO 
we shouldn't design D around limitations of C.



More information about the Digitalmars-d mailing list