 
 inspect = (fn) ->
   code = "a=#{fn.toString()}"
-  _(esprima.parse(code)).inspect()
+  inspectAst(esprima.parse(code))
 
 evaluate = (fn) ->
   code = "a=#{fn.toString()}"
-  ast = _(esprima.parse(code)).traverse((node) ->
+  ast = traverse(esprima.parse(code), (node) ->
     if _(node.type).isEqual('CallExpression') and
        _(macros).has(node.callee.name)
       macros[node.callee.name](node)


  fn(ast)

_.mixin traverse: traverse

macros = {}


      type: "ExpressionStatement"
      expression: node.argument
    else
      node)
  escodegen.generate(ast)

evaluate.define = define
evaluate.inspect = inspect

module.exports = evaluate

