With regard to S. Karpinski's counterexample regarding sort, I'm not sure I 
understand the problem.  If sort! is defined to take a vector v as input, 
and meanwhile f is defined to take a const-vector v and function g as 
input, then if the user tries to call g(v), then the compiler will emit an 
error because it cannot convert const-vector to vector.  Anyway, this is 
how it would work in C++.  Doesn't this solve the problem?

-- Steve Vavasis



On Thursday, June 12, 2014 8:28:18 PM UTC+3, vav...@uwaterloo.ca wrote:
>
> Both C++ and Fortran 90 allow the programmer to annotate call-by-reference 
> arguments to a function as to whether the function is allowed to change 
> them (this is denoted  const & in C++).  The compiler then enforces the 
> const-ness of the argument.  I don't see how to do this in Julia.  Is it 
> available?  If not, is there a reason why it was not included?  This is a 
> fairly basic tool for self-documenting code and for ensuring program 
> correctness.
>
> And a related question: the documentation makes a big deal about "stable 
> types" for function return arguments.  An obvious question is why the 
> language doesn't allow the programmer to declare in the function heading 
> what will be the return types of the function, and then have the compiler 
> enforce this stability.  Is this possible in Julia?  If not, is there a 
> technical reason for omitting it?
>
> Thanks,
> Steve Vavasis
>
> P.S. I have a few more questions but I'll pause now to wait for answers to 
> these questions.  I hope they are easy to answer!
>

Reply via email to