!7 concept Example { S input; S verb; transient S verb_guessed; } static F1 guesser; static JLabel lblStatus; p-subst { dbIndexing(Example, 'input); autoRestart(); for (S s : keys(gac36k())) uniq(Example, input := s); guesser = randomGuesser1(examples()); print("Making CRUD"); SimpleCRUD crud = simpleCRUD(Example); addToFrame(crud.panel, lblStatus = jlabel()); thread { guessLoop(); } } static SS examples() { ret mapFromKeyAndValueField([Example e : list(Example) | nempty(e.verb)], 'input, 'verb); } svoid guessLoop { repeat with sleep 5 { int changes = 0; loading "Guessing..." { for (Example e) changes += cset(e, verb_guessed := unnullStr(pcallF(guesser, e.input))); } if (changes > 0) change(); examples(); set(lblStatus } }