 labelParams = (ast, params) ->
   paramNames = (token for {token} in params)
   mapTokens paramNames, ast, (word) ->
-    word.label = 'param' unless word.label and word.label isnt 'recurse'
+    word.label = 'param' if isReference word
 
 labelRecursiveCall = (ast, fnname) ->
   mapTokens [fnname], ast, (word) ->

    for pattern in patterns by 2
      labelNames pattern
    node

fnDefinition = (node) ->
  words = inside node


compileImpl = (node, hoistableWheres = []) ->
  # For now special case match to allow definition hoisting up one level
  if matchNode 'match', node
    [op, args...] = inside node
    return trueMacros[op.token] hoistableWheres, args...

  switch node.type
    when 'comment' then 'null'
