public static IFn loadClojureFn(String namespace, String name) { try { clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + ")")); } catch (Exception ignored) { // if playing from the repl and defining functions, file won't exist } return (IFn) RT.var(namespace, name).deref(); }
public static IFn loadClojureFn(String namespace, String name) { try { clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + ")")); } catch (Exception e) { // if playing from the repl and defining functions, file won't exist } return (IFn) RT.var(namespace, name).deref(); }
@Override public Object eval(Reader reader, ScriptContext context) throws ScriptException { try { // Get engine bindings and send them to Clojure Bindings engineBindings = context.getBindings(ScriptContext.ENGINE_SCOPE); engineBindings.entrySet().forEach((entry) -> Var.intern(Namespace.findOrCreate(NAMESPACE_SYMBOL), Symbol.create(entry.getKey().intern()), entry.getValue(), true)); Var.pushThreadBindings( RT.map(RT.CURRENT_NS, RT.CURRENT_NS.deref(), RT.IN, new LineNumberingPushbackReader(context.getReader()), RT.OUT, context.getWriter(), RT.ERR, context.getErrorWriter())); Object result = Compiler.load(reader); return result; } catch (Exception e) { throw new ScriptException(e); } finally { Namespace.remove(NAMESPACE_SYMBOL); } }
if (var.ns.toString().equals(namespace)) { String name = entry.getKey().toString(); if (var.deref() instanceof IFn) { Function f = new ClojureFunction(name, var.fn()); builder.put(name, f);
public Number dec(Number x){ MathContext mc = (MathContext) MATH_CONTEXT.deref(); BigDecimal bx = (BigDecimal) x; return mc == null ? bx.subtract(BigDecimal.ONE) : bx.subtract(BigDecimal.ONE, mc); } }
public Number inc(Number x){ MathContext mc = (MathContext) MATH_CONTEXT.deref(); BigDecimal bx = (BigDecimal) x; return mc == null ? bx.add(BigDecimal.ONE) : bx.add(BigDecimal.ONE, mc); }
synchronized Class getCompiledClass(){ if(compiledClass == null) // if(RT.booleanCast(COMPILE_FILES.deref())) // compiledClass = RT.classForName(name);//loader.defineClass(name, bytecode); // else { loader = (DynamicClassLoader) LOADER.deref(); compiledClass = loader.defineClass(name, bytecode, src); } return compiledClass; }
static boolean isPreserveReadCond(Object opts) { if(RT.booleanCast(READ_COND_ENV.deref()) && opts instanceof IPersistentMap) { Object readCond = ((IPersistentMap) opts).valAt(OPT_READ_COND); return COND_PRESERVE.equals(readCond); } else return false; }
public Object eval() { Namespace ns = (Namespace) RT.CURRENT_NS.deref(); ns.importClass(RT.classForNameNonLoading(c)); return null; }
private static int registerConstant(Object o){ if(!CONSTANTS.isBound()) return -1; PersistentVector v = (PersistentVector) CONSTANTS.deref(); IdentityHashMap<Object,Integer> ids = (IdentityHashMap<Object,Integer>) CONSTANT_IDS.deref(); Integer i = ids.get(o); if(i != null) return i; CONSTANTS.set(RT.conj(v, o)); ids.put(o, v.count()); return v.count(); }
private static void registerVarCallsite(Var v){ if(!VAR_CALLSITES.isBound()) throw new IllegalAccessError("VAR_CALLSITES is not bound"); IPersistentCollection varCallsites = (IPersistentCollection) VAR_CALLSITES.deref(); varCallsites = varCallsites.cons(v); VAR_CALLSITES.set(varCallsites); // return varCallsites.count()-1; }
final public Number multiply(Number x, Number y){ MathContext mc = (MathContext) MATH_CONTEXT.deref(); return mc == null ? toBigDecimal(x).multiply(toBigDecimal(y)) : toBigDecimal(x).multiply(toBigDecimal(y), mc); }
public static synchronized clojure.lang.IFn loadClojureFn(String namespace, String name) { try { clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + ")")); } catch (Exception e) { //if playing from the repl and defining functions, file won't exist } return (clojure.lang.IFn) RT.var(namespace, name).deref(); }
private static int registerKeywordCallsite(Keyword keyword){ if(!KEYWORD_CALLSITES.isBound()) throw new IllegalAccessError("KEYWORD_CALLSITES is not bound"); IPersistentVector keywordCallsites = (IPersistentVector) KEYWORD_CALLSITES.deref(); keywordCallsites = keywordCallsites.cons(keyword); KEYWORD_CALLSITES.set(keywordCallsites); return keywordCallsites.count()-1; }
public static IFn loadClojureFn(String namespace, String name) { try { clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + ")")); } catch (Exception ignored) { // if playing from the repl and defining functions, file won't exist } return (IFn) RT.var(namespace, name).deref(); }
public static IFn loadClojureFn(String namespace, String name) { try { clojure.lang.Compiler.eval(RT.readString("(require '" + namespace + ")")); } catch (Exception e) { //if playing from the repl and defining functions, file won't exist } return (IFn) RT.var(namespace, name).deref(); }
private static void registerVar(Var var) { if(!VARS.isBound()) return; IPersistentMap varsMap = (IPersistentMap) VARS.deref(); Object id = RT.get(varsMap, var); if(id == null) { VARS.set(RT.assoc(varsMap, var, registerConstant(var))); } // if(varsMap != null && RT.get(varsMap, var) == null) // VARS.set(RT.assoc(varsMap, var, var)); }