: block-number ( bb -- n ) numbers get at ;
: number-blocks ( bbs -- )
- [ 2array ] map-index >hashtable numbers set ;
+ zip-index >hashtable numbers set ;
\ index [
dup sequence? [
dup length 4 >= [
- dup length iota zip >hashtable '[ _ at ]
+ zip-index >hashtable '[ _ at ]
] [ drop f ] if
] [ drop f ] if
] 1 define-partial-eval
<PRIVATE
: >index-assoc ( sequence -- assoc )
- dup length iota zip >hashtable ;
+ zip-index >hashtable ;
PRIVATE>
FROM: namespaces => set ;
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 ;
GML:: subarray ( array n k -- slice )
k n k + array subseq ;
GML: sort-number-permutation ( array -- permutation )
- [ 2array ] map-index sort-keys reverse values ;
+ zip-index sort-keys reverse values ;
! Dictionaries
ERROR: not-a-dict obj ;
] keep ; inline
: arg-sort ( seq -- indices )
- dup length iota zip sort-keys values ;
+ zip-index sort-keys values ;
: first= ( seq elt -- ? ) [ first ] dip = ; inline
: second= ( seq elt -- ? ) [ second ] dip = ; inline
IN: sorting.extras
: argsort ( seq quot: ( obj1 obj2 -- <=> ) -- sortedseq )
- [ dup length iota zip ] dip
+ [ zip-index ] dip
[ [ first-unsafe ] bi@ ] prepose
sort [ second-unsafe ] map! ; inline