Message evalLightMethod := method(scope, call message arguments slice(1) foreach(i, arg, scope setSlot(arguments at(i) name, call sender doMessage(arg, call sender)) ) scope doMessage(self arguments last, scope) ) Map update := method(key, atPut(key, if(hasKey(key), call argAt(2) evalLightMethod(call sender, at(key)) , call evalArgAt(1) ) ) self ) List foreachPair := method( msg := call message last := first slice(1) foreach(v, msg evalLightMethod(call sender, last, v) last = v ) ) m := Map clone word := "a" m update(word, 0, (count, count + 1)) m update(word, 0, (count, count + 1)) m update(word, 0, (count, count + 1)) writeln(m at("a")) addWords := method(word, words update(word, 0, (count, count + 1)) values ) words := list(1,2,3,4,5,6) words foreachPair(x, y, writeln(x, " ", y) ) File clone setPath("file.txt") contents split foreachPair(x, y, writeln(x, " ", y))