You know, I don't think there's really a good section in the manual that talks about how all the block constructs can each behave as one syntactical element.  @hayd: Try this:

    julia> function foo(x)
             return if x
               1
             else
               2
             end
           end

`quote … end` behaves similarly.  It's one value.  You can assign the result of these blocks to variables, too.  Even `for` loops (which looks really funny, and is equally pointless as they simply evaluate to `nothing`).