!7 sclass Entry { S code; transient F1 function; transient Throwable error; } cmodule FunctionsOnStrings > DynObjectTable { // API F1 getFunction(S code) { lock lock; Entry e = objectWhere(data(), +code); if (e == null) add(e = nu Entry(+code)); if (e.error != null) throw rethrow(e.error); if (e.function == null) { print("Loading function: " + code); try { e.function = codeWithHintsToFunctionOnString(code); } catch ex { e.error = ex; throw rethrow(ex); } } ret e.function; } }