       return malformed call, "Type annotation required"
 
     # Register type
+    params = _terms paramTuple
     ctx.declare macroName,
-      arity: (map _symbol, _terms paramTuple)
+      arity: (map _symbol, params)
       type: quantifyUnbound ctx, typeConstrainedCompile ctx, type
 
     #macroFn = transform call

    # log compiledMacro
    ctx.addMacro macroName, simpleMacro eval compiledMacro

    jsNoop()

simpleMacro = (macroFn) ->
  (ctx, call) ->

# Valid identifiers

validIdentifier = (name) ->
  (if inSet reservedInJs, name
    "#{name}_"
  else if name is '.'
    "dot_"
  else
    name)
    .replace(/\+/g, 'plus_')
    .replace(/\-/g, '__')
    .replace(/\*/g, 'times_')
    .replace(/\//g, 'over_')
    .replace(/\!/g, 'not_')
    .replace(/\=/g, 'eq_')
    .replace(/\</g, 'lt_')
    .replace(/\>/g, 'gt_')
    .replace(/\~/g, 'neg_')
    # .replace(/\√/g, 'sqrt_')
    # .replace(/\./g, 'dot_')
    .replace(/\&/g, 'and_')
    .replace(/\?/g, 'p_')
    .replace(/^const$/, 'const_')
    .replace(/^default$/, 'default_')
    .replace(/^with$/, 'with_')
    .replace(/^in$/, 'in_')


# graphToWheres = (graph) ->
