     compiledMacro = translateToJs translateIr ctx,
         (termCompile ctx, call_ (token_ 'fn'), (join [paramTuple], rest))
     macroFn = eval compiledMacro
-    ctx.addMacro macroName, (ctx, call) ->
+    ctx.addMacro ctx.definitionPattern(), (ctx, call) ->
       # operatorCompile ctx, call
       # args = termsCompile ctx, (_arguments call)[0..macroFn.length]
       #callTyping ctx, call

    @_macros

  addMacro: (name, macro) ->
    @_macros[name] = macro

  definePattern: (pattern) ->
    if @isDefining()

callMacroCompile = (ctx, call) ->
  op = _operator call
  op.label = 'keyword'
  macro = ctx.macros()[op.symbol]
  op.id = macro.id
  expanded = macro ctx, call
  if isTranslated expanded
    expanded
  else
