> fun(bar()) # n.len=1 ?? why not 0?

Because fun is a macro, not a function. A macro call is not supposed to 
"evaluate" its arguments - definitely not untyped ones - before using them. It 
takes pieces of code, transforms them into AST nodes (in this case: one node, 
hence n.len = 1) and makes a new AST node out of them. Your D example shows a 
function, which is a completely different animal.

Imagine bar had side effects. Would you really want fun(bar()) to result in 
code which does nothing (since the varargs argument would be considered 
"empty")?

Reply via email to