diff options
-rw-r--r-- | src/jvm/clojure/lang/Compiler.java | 13 |
1 files changed, 11 insertions, 2 deletions
diff --git a/src/jvm/clojure/lang/Compiler.java b/src/jvm/clojure/lang/Compiler.java index cc81405c..d8b4ec9b 100644 --- a/src/jvm/clojure/lang/Compiler.java +++ b/src/jvm/clojure/lang/Compiler.java @@ -3816,8 +3816,17 @@ public static Object eval(Object form) throws Exception{ } try { - Expr expr = analyze(C.EVAL, form); - return expr.eval(); + if(form instanceof IPersistentCollection) + { + FnExpr fexpr = (FnExpr) analyze(C.EXPRESSION, RT.list(FN, PersistentVector.EMPTY, form), "repl"); + IFn fn = (IFn) fexpr.eval(); + return fn.invoke(); + } + else + { + Expr expr = analyze(C.EVAL, form); + return expr.eval(); + } } finally { |