additions to math.ranges, including range-min, range-max, clamp-to-range, and sequence-index-range
parent
f4540c0697
commit
5cd4054ec7
|
@ -21,3 +21,14 @@ IN: temporary
|
||||||
|
|
||||||
[ { 0 1/3 2/3 1 } ] [ 0 1 1/3 <range> >array ] unit-test
|
[ { 0 1/3 2/3 1 } ] [ 0 1 1/3 <range> >array ] unit-test
|
||||||
[ { 0 1/3 2/3 1 } ] [ 1 0 -1/3 <range> >array reverse ] unit-test
|
[ { 0 1/3 2/3 1 } ] [ 1 0 -1/3 <range> >array reverse ] unit-test
|
||||||
|
|
||||||
|
[ t ] [ 5 [0,b] range-increasing? ] unit-test
|
||||||
|
[ f ] [ 5 [0,b] range-decreasing? ] unit-test
|
||||||
|
[ f ] [ -5 [0,b] range-increasing? ] unit-test
|
||||||
|
[ t ] [ -5 [0,b] range-decreasing? ] unit-test
|
||||||
|
[ 0 ] [ 5 [0,b] range-min ] unit-test
|
||||||
|
[ 5 ] [ 5 [0,b] range-max ] unit-test
|
||||||
|
[ 3 ] [ 3 5 [0,b] clamp-to-range ] unit-test
|
||||||
|
[ 0 ] [ -1 5 [0,b] clamp-to-range ] unit-test
|
||||||
|
[ 5 ] [ 6 5 [0,b] clamp-to-range ] unit-test
|
||||||
|
[ { 0 1 2 3 4 } ] [ 5 sequence-index-range >array ] unit-test
|
||||||
|
|
|
@ -38,4 +38,25 @@ INSTANCE: range immutable-sequence
|
||||||
|
|
||||||
: [1,b] 1 swap [a,b] ;
|
: [1,b] 1 swap [a,b] ;
|
||||||
|
|
||||||
: [0,b) 0 swap (a,b] ;
|
: [0,b) 0 swap [a,b) ;
|
||||||
|
|
||||||
|
: range-increasing? ( range -- ? )
|
||||||
|
range-step 0 > ;
|
||||||
|
|
||||||
|
: range-decreasing? ( range -- ? )
|
||||||
|
range-step 0 < ;
|
||||||
|
|
||||||
|
: first-or-peek ( seq head? -- elt )
|
||||||
|
[ first ] [ peek ] if ;
|
||||||
|
|
||||||
|
: range-min ( range -- min )
|
||||||
|
dup range-increasing? first-or-peek ;
|
||||||
|
|
||||||
|
: range-max ( range -- max )
|
||||||
|
dup range-decreasing? first-or-peek ;
|
||||||
|
|
||||||
|
: clamp-to-range ( n range -- n )
|
||||||
|
tuck range-min max swap range-max min ;
|
||||||
|
|
||||||
|
: sequence-index-range ( seq -- range )
|
||||||
|
length [0,b) ;
|
||||||
|
|
Loading…
Reference in New Issue