 iife = (body) ->
   # """(function(){
   #     #{body}}())"""
-  (jsCall (jsFunction
-    params: []
-    body: body), [])
+  (jsWrap (jsCall (jsFunction
+      params: []
+      body: body), []))
 
 varList = (varNames) ->
   # "var #{listOf varNames};"

    [expression] = _terms ast
    {js} = compileCtxAstToJs topLevelExpression, ctx, expression
    (finalizeTypes ctx, expression)
    js: library + immutable + (listOfLines map lookupJs, (reverse modules)) + '\n' + js
    ast: ast
    errors: checkTypes ctx


  types: ctx._scope()
  subs: ctx.substitution.fails
  ast: ast
  compiled: library + immutable + compiledDefinitions.js + '\n;' + compiledExpression.js

typeEnumaration = (ctx) ->
  values mapMap _type, ctx._scope()
