!7 static L data; static JList list; p-subst { autoRestart(); L lines = trimAll(lines(mechList_raw("heise.de 2018/04/20 (raw)"))); data = notEndingWith(".", filter containsSpace(standAloneLines(lines)); makeList(); L ops = mechLists_intersect("Operations on lists", "Safe JavaX functions"); addToWindowWithMargin(list, jcenteredLine(map(ops, func(fS op) -> JButton { jbutton(op, r-messagebox { performOp(op); }) }))); } svoid performOp(S op) { O newData = callAndMake(op, data); if (isStringList(newData)) data = (L) newData; else data = lines(str(newData)); makeList(); } svoid makeList { list = showList(list, data); titleStatus(list, l(data)); }