Don't add commas before argument lists
Allow closures, avoid weird bugs

By using self reference in the argument list portion of a function
  definition, a variable which is defined in outer scope can be given
  a default definition in inner scope.
Since variables prefixed by underscores are considered 'constants', by
  defining a constant in this manner, one can unalterably include a
  variable from outer scope in a function definition's inner scope.
Calling a variable which is defined as a non-function value or a
  function call which returns a non-function value should produce an
  error since it doesn't make any sense.
The self-reference syntax for closures makes no sense when it is
  applied to a variable which has no definition in outer scope, so
  that should also throw up an error. Especially since it can cause
  stack overflows otherwise.