On Fri, Mar 6, 2015 at 11:43 AM, J Luis <[email protected]> wrote: > Is there any fundamental reason why the nargout mechanism cannot (or is > very hard) to implement? > Because if not I really think it would be very very handy to have it. > While we can workaround the nargin concept with the multiple dispatch, the > same does help for the nargout. >
I'm not an expert on the innards of the Julia compiler, but I believe the most important reason is that it interferes with type stability of a function, which in turn interferes with the ability of the compiler to generate optimized code. Additionally, functions can currently be used as callbacks from C and Fortran code (and there's generally a desire to keep/enhance C interactivity as much as possible). If we wanted functions to know the number of output parameters, there would need to be a mechanism to provide this information to the function at call time (e.g., the number of args would perhaps need to be passed in as a hidden parameter). As there is no mechanism to do this in C, we would either lose compatibility with C, or need to provide a new kind of function, solely for this purpose. So while adding such functionality might add convenience (mostly for people coming from Matlab), it 1) would produce slower, less optimized code, and 2) would require adding a new kind of function to the language and compiler (which is already pretty complicated). I think that would be a pretty hard sell to the primary developers. Cheers! Kevin
