   'seq splice in match'
   """
     & (macro [what to]
-      (: (Fn a (List a) (List a)))
+      (: (Fn a (Array a) (Array a)))
       (Js.call (Js.access to "unshift") {what}))
 
     map (fn [what to]

    paramNames = map _symbol, params
    ctx.declare macroName,
      arity: paramNames
      type: quantifyUnbound ctx, typeConstrainedCompile ctx, type

    #macroFn = transform call
    compiledMacro = translateToJs translateIr ctx,

      body: translateIr ctx, body)])


irArray = (items) ->
  {ir: irArrayTranslate, items}

irArrayTranslate = (ctx, {items}) ->
  (jsCall "Immutable.List.of", (translateIr ctx, items))


irList = (items) ->
  {ir: irListTranslate, items}

irListTranslate = (ctx, {items}) ->
  (jsCall "Immutable.Stack.of", (translateIr ctx, items))


irMap = (keys, elems) ->
