   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

  else
    if nonLabeledArgs.length < positionalParams.length
      # log "currying known call"
      lambda = (fn_ extraParams, sortedCall)
      trackTransformation lambda, sortedCall
      compiled = callMacroCompile ctx, lambda
      retrieve call, lambda

    tokenize ']'
  ]

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

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