 #   exports"""
 
 exports.library = library
+exports.runtime = runtime
 
 exports.originOf = originOf
 exports.sortedArgs = sortedArgs

      js: ''
    }
  else
    module = lookupCompiledModule moduleName
    {modules, ctx} = contextWithDependencies moduleDependencies moduleName
    [expression] = _terms ast
    compilationFn = (topLevelExpressionInModule importsFor moduleDependencies moduleName)
    {js} = compileCtxAstToJs compilationFn, ctx, expression
    (finalizeTypes ctx, expression)
    js: library + immutable + (listOfLines map lookupJs, (setToArray runtimeDependencies moduleName)) + '\n;' + js
    ast: ast
    errors: checkTypes ctx
    malformed: ctx.isMalformed

importsFor = (moduleSet) ->
  lookupDefinitions = (name) ->


# end of Utils

# Exported runtime
runtime =
  parseShem: (string) ->
    astize tokenize string

  evalShem: (ast) ->
    {js} = compileExpressionFromAst ast, moduleName
    {js} = compileCtxAstToJs topLevelExpression, (new Context), ast
    eval js

# Unit tests
test = (testName, teaSource, result) ->
  try
