 freshName = (nameIndex) ->
   # TODO: handle more than 27 variables
   String.fromCharCode 97 + nameIndex
-
-concat = (maps...) ->
-  concated = newMap()
-  for map in maps
-    for k, v of map.values
-      addToMap concated, k, v
-  concated
 
 # mycroft = (context, node, environment) ->
 #   if node.label is 'numerical'

    opTea = op.tea
  [s2, nextIndex, arg] = infer (subContext s1, context), arg, nextIndex
  s3 = unify (subExp s2, opTea), [arg.tea, returnName]
  [(concat s3, s2, s1), nextIndex, (subExp s3, returnName)]




    addToMap initialized, k, args[i + 1]
  initialized

concatSets =
concatMaps = (maps...) ->
  concated = newMap()
  for map in maps
    for k, v of map.values
      addToMap concated, k, v
  concated

# end of Set

# Type inference and checker
