May I suggest that no change is made to the LFUN API, and that the < > stuff is handled with wrappers.
Something like:
class FromEnd(mixed x) { int `(mixed y) { return sizoef(y) - y; } }
o[x..y] == o->`[](x,y) o[<x..y] == o->`[](FromEnd(x),y) o[<x..<y] == o->`[](FromEnd(x),FromEnd(y)) o[x..<y] == o->`[](x,FromEnd(y)) o[x] == o->`[](FromEnd(y))
This should be 100% compatible with old code. The drawback is that all `[] functions will have to be updated to support the < syntax.