!7 concept Entry { S line, category, answer; } module LineToCategory > DynCRUD { *() { super(Entry); } // API void setAnswer(S line, S category, S answer) { Entry e = uniq_sync(Entry, +line, +category); if (e.answer != null && neqic(e.answer, answer)) programLogStructure(litorderedmap( action := "Overwritten", +line, +category, oldAnswer := e.answer, +answer)); cset(e, +answer); } }