   mapTokens [fnname], ast, (word) ->
     word.label = 'recurse' if word.label isnt 'param'
 
+# Ideally shouldnt have to, just doing it to get around the def checking
+labelRequires = (ast) ->
+  macro 'require', ast, (node, words) ->
+    [req, module, list] = words
+    module.label = 'symbol'
+    for fun in inside list
+      fun.lable = 'symbol'
+    node
+
 typeDatas = (ast) ->
   macro 'data', ast, (node) ->
     node.type = 'data'

compileTop = (ast) ->
  ast.scope = topScopeDefines()
  {body, wheres} = fnImplementation inside ast
  compileFnImpl body, wheres

compileWheres = (ast) ->

  result

typifyMost = (ast) ->
  apply ast, typeComments, typeDatas, typeTypes, labelSimple, labelMatches, labelFns, labelRequires

typify = (ast) ->
  apply ast, typifyMost, labelComments, labelOperators

typifyTop = (ast) ->
  apply ast, typifyMost, labelTop, labelComments, labelOperators

typifyBottom = (ast) ->
  apply ast, typifyMost, labelBottom, labelComments, labelOperators

typifyDefinitions = (ast) ->
  apply ast, typifyMost, labelDefinitions, labelComments, labelOperators
