!7 static JTextField tf; static JTextArea textArea; static ConcurrentEvaluator currentEval; p-substance { showFrame(northAndCenter(tf = jtextfield(), textArea = jtextarea())); onEnter(tf, f update); } svoid update { if (currentEval != null) currentEval.cancelAndWait(); final new ConcurrentEvaluator eval; currentEval = eval; eval.addAll(evaluators(getText(tf))); eval.onNewResult = r { updateResults(eval) }; eval.start(); } svoid updateResults(ConcurrentEvaluator eval) { setText(textArea, lines(allToString(notNullOnly(eval.results())))); } static int coresToUse() { ret max(1, numberOfCores()-1); } static L evaluators(S s) { ret ll(func() { "trimmed: " + trim(s) }); }