In Part 1, we covered BoxLang's first-class range system: lazy evaluation, exclusive boundaries, built-in types (integers, decimals, characters, dates), custom stepping, Java Stream integration, and contains() semantics. If you haven't read it yet, start there.
BoxLang 1.14.0 : BoxLang Ranges Part 2: Teach BoxLang Your Types with `IRangeable`