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 }
No comments:
Post a Comment