!7 static L> lastList; // text + action static L> suggest() { L> l = new L; // Need Runnables because we export for (S text, function : mechMapCI("Suggester entries")) { fS f = function; addPair(l, text, r { callAndMake(f) }); } // Return list unless same as last time if (eq(firstOfPairs(lastList), firstOfPairs(l))) null; ret lastList = l; }