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