       # Replace assign to with cache name
       cacheName = @newJsVariable()
       cache = [cacheName, @assignTo()]
-      @_assignTos[@_assignTos.length - 1] = cacheName
+      # @_assignTos[@_assignTos.length - 1] = cacheName #instead change assignTo
       @cacheScopes[@cacheScopes.length - 1][0] = cache
 
   _translationCache: ->

    @_assignTos.push compiled

  assignTo: ->
    @_assignTos[@_assignTos.length - 1]

  resetAssignTo: ->
    @_assignTos.pop()


    # TODO match

    # 'if', '(Fn Bool a a a)'
    # TODO JS interop

    # 'sqrt', '(Fn Num Num)'
    # 'not', '(Fn Bool Bool)'

    # '^', binaryMathOpType

    # '~', '(Fn Num Num)'

    # '+', binaryMathOpType
    # '*', binaryMathOpType
    # '=', comparatorOpType
    # '!=', comparatorOpType
    # 'and', '(Fn Bool Bool Bool)'
    # 'or', '(Fn Bool Bool Bool)'

    # '-', binaryMathOpType
    # '/', binaryMathOpType
    # 'rem', binaryMathOpType
    # '<', comparatorOpType
    # '>', comparatorOpType
    # '<=', comparatorOpType
    # '>=', comparatorOpType
    ),
    newMapWith 'empty-array', (type: (parseUnConstrainedType '(Fn (Array a))'), arity: [])
      'cons-array', (type: (parseUnConstrainedType '(Fn a (Array a) (Array a))'), arity: ['what', 'onto'])

