Swift Ranges
Tuesday, June 10, 2014
Looking at the documentation for the Swift programming language recently released by Apple, I noticed they have support for integer ranges, similar to how the range objects work in Factor.
In Swift, you can get a range of the integers 2 through 6 by doing
2...6
and the integers 2 through 5 by doing 2..6
. Notice the use of
three or two dots to indicate whether the range includes the last
number, or not, respectively.
I thought it would be fun to implement a similar syntax for Factor.
First, you can show that:
IN: scratchpad 2 6 [a..b) >array .
{ 2 3 4 5 }
IN: scratchpad 2 6 [a..b] >array .
{ 2 3 4 5 6 }
Similar to how we implemented fat arrows (also known as “pair rockets” or “hash rockets”), we can define the following syntax words:
SYNTAX: .. dup pop scan-object [a..b) suffix! ;
SYNTAX: ... dup pop scan-object [a..b] suffix! ;
And then use them:
IN: scratchpad 2 .. 6 >array .
{ 2 3 4 5 }
IN: scratchpad 2 ... 6 >array .
{ 2 3 4 5 6 }