!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() { for ping (Entry e : shuffledIterator(concepts())) if (isYes(e.isWord)) ret e.word; null; } LS actualWords() { ret collect word(filter(concepts(), func(Entry e) -> bool { isYes(e.isWord) })); } }