@ArneBab we have all 3 (real function X; function X + real::X; function X result(Y) + real::Y) in our production code.
I only use the result option if the function name is quite long; or the function name and the return value name are not logical enough [e.g.: function get_integral_from_shape(shape) result(integral)].
Definitely don't want to be writing code with lines like:
get_integral_from_shape_cubic = get_integral_from_shape_cubic + func(get_integral_from_shape_cubic)
Oh... I wish "+="