summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/jvm/clojure/lang/Compiler.java13
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
{