 
 controls = '\\(\\)\\[\\]\\{\\}'
 
-tokenize = (input) ->
+tokenize2 = (input) ->
   whitespace = ''
   currentPos = 0
   while input.length > 0

binaryMathOpType = ['Num', ['Num', 'Num']]
comparatorOpType = ['a', ['a', 'Bool']]

builtInContext = ->
  newMapWith 'true', 'Bool',
    'false', 'Bool'

  not (Array.isArray name) and name.charCodeAt(0) >= 97

freshName = (nameIndex) ->
  suffix = if nameIndex > 25 then Math.floor nameIndex / 25 else ''
  String.fromCharCode 97 + nameIndex % 25

typeVariable = (name) ->
