• 0 Posts
  • 2 Comments
Joined 2 years ago
cake
Cake day: June 26th, 2023

help-circle
  • I’ve been working on this problem for my own language, and have landed on something more clear than just following a convention. Basically you use [] and () to specify if the left and right bounds are included or not (based off of interval notation: https://en.wikipedia.org/wiki/Interval_(mathematics)#Including_or_excluding_endpoints). e.g. for your case

    --slice [1:5)    # include the left index. don't include the right index
    --slice [1:5]    # include both left and right index
    --slice (1:5]    # don't include the left index. include the right index
    --slice (1:5)    # don't include the left or right index
    

    potentially not relevant to your case, but my version supports an end keyword which you can do math on, similar to python’s negative indexing

    [2:end-3]    # start at index 2 (included) and go through till the third from last index (included)
    (end-3:end]  # start at the third from last (excluded) and go to the end (included)
    

    Personally I’m a fan of 0 indexing, but for your context, I think it would depend on how the user sees what they’re slicing. E.g. if it was pages with page numbers, the numbers would indicate if it was 0 or 1 index based. If there’s nothing to actually show the user, I think picking something reasonable and documenting it well is probably the best bet.