One of the patterns you can see in many languages are paired methods — modify itself, and the other one — create new instance and modify it. For example, it could be the case of any sequence:
// modify itself def !reverse() ••• end // return the modified version def reverse() 'Self let clone = this.copy(); clone!reverse(); return clone; end
The body of the first method of course varies, but the second one is always the same and there is no point in writing it manually. In Skila you write the first method and you will get the second one automatically.