!7 concept Entry { S word; S isWord; // 'yes, 'no, other S comment; } cmodule ActualWords > DynCRUD { start { dbIndexing(Entry, 'word); } // API void addWordsWithComment(Iterable words, S comment) { for (S word : words) { Entry e = uniq_sync Entry(+word, isWord := 'yes); cset(e, comment := joinNemptiesWithComma(e.comment, comment)); } } S randomWord() { Entry e; L l = concepts(); if (empty(l)) null; int count = 0; do { e = random(l); } while (safety++ < 1000 && !isYes(e.isWord)); ret e.word; } }