   if isTypeAnnotation maybeType
     [docs] = partition isComment, rest
     params = (map token_, map _symbol, _terms paramTuple)
-    typedFn_ params, maybeType, join docs, [call_ (token_ macroName), params]
+    fn_ params, concat [[maybeType], docs, [call_ (token_ macroName), params]]
   else
     # TODO: docs for macros
     [docs] = partition isComment, rest

      if (not ctx.isPreTyped macroName)
        malformed ctx, call, "Type annotation required"
      macroBody = join [type], macroBody

    # if not macroBody.length > 0
    #   return malformed ctx, call, "Macro body missing"

    tokenize ']'
  ]

fn_ = (params, rest) ->
  (call_ (token_ 'fn'), join [(tuple_ params)], rest)

token_ = (string) ->
  (tokenize string)[0]
