> b.a
>
> b.a()
Called [UFCS](https://en.wikipedia.org/wiki/Uniform_Function_Call_Syntax)
> But if I have any proc without args, I cannot just call it without ()?
Because you can write it like this
proc aha(): string = "aha"
let a = aha # `a` act as procvar for `aha`
echo a() # so you need '()' to call it
echo repr(a) # see what is actually `a`
Run
> May be it's clever, it could be confusing having vars and procedures without
> ()
Indeed it's confusing, but all you care is what it returns or does.
If the function expression invoked as right side, you'll know it has to return
something, in case "aha" returned function pointer while "aha()" returned
string.
If the function used solely in statement, meant it somehow has to return void
type.
How do we know it's just variable or function? Just look for its definition.