svoid pb_enableAutoPatterns(PhilosophyBot1 bot, O... _) { optPar bool debug; if (debug) print("pb_enableAutoPatterns"); Set patterns = ciSet(); IVF1 onFact = fact -> bot.addFacts(dm_topDownParseToGroupings(fact, patterns)); IVF1 onRule = rule -> { LS l = uniquifyCI(map(lhs -> philosophyBot_varsToStars(bot, lhs), stringsOnly(philosophyBot_allPartsOfLHS(rule)))); if (debug) print("Patterns in " + rule + ": " + l); LS l2 = listMinusSet(l, patterns); if (nempty(l2)) { if (debug) print("Have new patterns: " + l2); patterns.addAll(l2); bot.updateCodeOnFact(onFact); } }; bot.addCodeOnFact(onFact); bot.addCodeOnRule(onRule); }