In the Julia manual, the second example in
block-syntax-for-function-arguments<http://docs.julialang.org/en/latest/manual/functions/#block-syntax-for-function-arguments>
contains
the following do block:
open("outfile", "w") do f
write(f, data)
end
and the documentation states that "The function argument to open receives a
handle to the opened file." I conclude from this that the return value (i.e.,
the file handle) of the open function is passed to this function f -> write(f,
data) that is used as the first argument of open. So far, so good (I think).
But now I go back and take another look at the first do block example:
map([A, B, C]) do x
if x < 0 && iseven(x)
return 0
elseif x == 0
return 1
else
return x
endend
I try to interpret this example in light of what I learned from the second
example. The map function has a return value, consisting of the array [A, B,
C], modified by applying the function in the do block to each element. If this
example behaved like in the second example, then the output of the map function
should be passed as an input to the function defined in the do block. Clearly
this doesn't happen, so the lesson I learned from the second example doesn't
apply here, apparently. Why not? Under what conditions is the output of the
outer function passed as an input to the inner function?
I must be looking at this wrong and would appreciate some help in getting my
mind right :-).
Thanks,
Peter