]> gitweb.factorcode.org Git - factor.git/blob - extra/assocs/extras/extras.factor
assocs.extras: adding a "zip-as" that is faster than "zip >hashtable".
[factor.git] / extra / assocs / extras / extras.factor
1 ! Copyright (C) 2012 John Benediktsson
2 ! See http://factorcode.org/license.txt for BSD license
3
4 USING: arrays assocs assocs.private kernel sequences ;
5
6 IN: assocs.extras
7
8 : assoc-harvest ( assoc -- assoc' )
9     [ nip empty? not ] assoc-filter ; inline
10
11 : assoc-sift ( assoc -- assoc' )
12     [ nip ] assoc-filter ; inline
13
14 : deep-at ( assoc seq -- value/f )
15     [ swap at ] each ;
16
17 : zip-as ( keys values exemplar -- assocs )
18     dup sequence? [
19         [ 2array ] swap 2map-as
20     ] [
21         [ dup length ] dip new-assoc
22         [ [ set-at ] with-assoc 2each ] keep
23     ] if ;