!7 cmodule SentenceAnalysis > DynPrintLog { transient new LS analyzers; start-thread { addAll(analyzers, f dropLeadingPunctuation, f ai_dropFillers); new Analyzer().analyze("OTOH, openbot streams from youtube"); } class Analyzer { new SeenAndQueue seen; { seen.max = 100; seen.onAddedToQueue(voidfunc(S s) { print("> " + s); }); } void analyze(S initial) { seen.add(initial); for (S s : seen) { for (O f : analyzers) { O result = callF(f, s); if (result cast S) seen.add(result); else if (result cast Iterable) seen.addAll(result); else if (result != null) print("Ignoring result: " + className(result) + " from " + f); } } } } }