 callUnknownCompile = (ctx, call) ->
   callUnknownTranslate ctx, (operatorCompile ctx, call), call
 
+# Also supports functional macros - macros with defined arity
 callKnownCompile = (ctx, call) ->
   operator = _operator call
   args = _labeled _arguments call

  """
  "(if False 1 2)", 2

  # TODO: support matching with the same name
  #       to implement this we need the iife to take as arguments all variables
  #       with the same names, since JavaScript shadows it too strongly and

  operator = _operator call
  operatorName = _symbol operator
  if isName operator
    (if operatorName of ctx.macros() and not ctx.arity operatorName
      macroCompile
    else if (ctx.isDeclared operatorName) and not ctx.arity operatorName
      callUnknownCompile
