basis, extra: Use zip-index.
parent
1ce7c6a9e7
commit
56f1b87a6f
|
@ -87,4 +87,4 @@ SYMBOL: numbers
|
||||||
: block-number ( bb -- n ) numbers get at ;
|
: block-number ( bb -- n ) numbers get at ;
|
||||||
|
|
||||||
: number-blocks ( bbs -- )
|
: number-blocks ( bbs -- )
|
||||||
[ 2array ] map-index >hashtable numbers set ;
|
zip-index >hashtable numbers set ;
|
||||||
|
|
|
@ -218,7 +218,7 @@ ERROR: bad-partial-eval quot word ;
|
||||||
\ index [
|
\ index [
|
||||||
dup sequence? [
|
dup sequence? [
|
||||||
dup length 4 >= [
|
dup length 4 >= [
|
||||||
dup length iota zip >hashtable '[ _ at ]
|
zip-index >hashtable '[ _ at ]
|
||||||
] [ drop f ] if
|
] [ drop f ] if
|
||||||
] [ drop f ] if
|
] [ drop f ] if
|
||||||
] 1 define-partial-eval
|
] 1 define-partial-eval
|
||||||
|
|
|
@ -8,7 +8,7 @@ IN: shuffle
|
||||||
<PRIVATE
|
<PRIVATE
|
||||||
|
|
||||||
: >index-assoc ( sequence -- assoc )
|
: >index-assoc ( sequence -- assoc )
|
||||||
dup length iota zip >hashtable ;
|
zip-index >hashtable ;
|
||||||
|
|
||||||
PRIVATE>
|
PRIVATE>
|
||||||
|
|
||||||
|
|
|
@ -5,7 +5,7 @@ math math.vectors math.matrices assocs arrays hashtables ;
|
||||||
FROM: namespaces => set ;
|
FROM: namespaces => set ;
|
||||||
IN: euler.b-rep
|
IN: euler.b-rep
|
||||||
|
|
||||||
: >index-hash ( seq -- hash ) [ 2array ] map-index >hashtable ; inline
|
: >index-hash ( seq -- hash ) zip-index >hashtable ; inline
|
||||||
|
|
||||||
TUPLE: b-edge < edge sharpness macro ;
|
TUPLE: b-edge < edge sharpness macro ;
|
||||||
|
|
||||||
|
|
|
@ -74,7 +74,7 @@ GML: slice ( array n k -- slice )
|
||||||
GML:: subarray ( array n k -- slice )
|
GML:: subarray ( array n k -- slice )
|
||||||
k n k + array subseq ;
|
k n k + array subseq ;
|
||||||
GML: sort-number-permutation ( array -- permutation )
|
GML: sort-number-permutation ( array -- permutation )
|
||||||
[ 2array ] map-index sort-keys reverse values ;
|
zip-index sort-keys reverse values ;
|
||||||
|
|
||||||
! Dictionaries
|
! Dictionaries
|
||||||
ERROR: not-a-dict obj ;
|
ERROR: not-a-dict obj ;
|
||||||
|
|
|
@ -372,7 +372,7 @@ PRIVATE>
|
||||||
] keep ; inline
|
] keep ; inline
|
||||||
|
|
||||||
: arg-sort ( seq -- indices )
|
: arg-sort ( seq -- indices )
|
||||||
dup length iota zip sort-keys values ;
|
zip-index sort-keys values ;
|
||||||
|
|
||||||
: first= ( seq elt -- ? ) [ first ] dip = ; inline
|
: first= ( seq elt -- ? ) [ first ] dip = ; inline
|
||||||
: second= ( seq elt -- ? ) [ second ] dip = ; inline
|
: second= ( seq elt -- ? ) [ second ] dip = ; inline
|
||||||
|
|
|
@ -3,7 +3,7 @@ math.order sequences sequences.extras sequences.private sorting ;
|
||||||
IN: sorting.extras
|
IN: sorting.extras
|
||||||
|
|
||||||
: argsort ( seq quot: ( obj1 obj2 -- <=> ) -- sortedseq )
|
: argsort ( seq quot: ( obj1 obj2 -- <=> ) -- sortedseq )
|
||||||
[ dup length iota zip ] dip
|
[ zip-index ] dip
|
||||||
[ [ first-unsafe ] bi@ ] prepose
|
[ [ first-unsafe ] bi@ ] prepose
|
||||||
sort [ second-unsafe ] map! ; inline
|
sort [ second-unsafe ] map! ; inline
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue