I don't think that syntax is what causes ambiguity. The issue is that we have arbitrary data types that we are looking up and that functions are first order objects. But... I think my argument about `foo` vs. `(foo)` being identical in a value position is also invalid as I believe that will pass the function by reference rather than execute and returning the value like would be done in the function object was in the id position.

What is thrown for the value in the sexpr id case now? Does this simplify the emitted code? I'm not sure what changed between the two versions since this is rebased.