!7 concept WordInfo { S word; int position; S fact, wordType; } cmodule InfoAboutWords > DynCRUD { S text, comment; visualize { ret northCenterAndSouthWithMargins( jSection("Input Text", fontSizePlus(2, dm_textField('text))), jSection("Facts", super.visualize()), jSection("Tell me something about a word:", dm_textFieldAndSubmit('comment, 'submitComment))); } void submitComment { S word = firstWord(comment); int i = indexOfIC_fullWord(text, word); if (i < 0) ret with print(quote(word) + " not found in sentence"); new Matches m; if (match_vbar("* is an adjective|* is an adjective here", comment, m)) cset(uniq_sync(WordInfo, +word, position := i), wordType := "adjective"); else uniq_sync(WordInfo, +word, position := i, fact := comment); } }