assocs.extras: adding a "zip-as" that is faster than "zip >hashtable".
parent
a4894fe8c1
commit
c3a6eab9ca
|
@ -9,3 +9,7 @@ IN: assocs.extras
|
||||||
{ f } [ H{ { "a" H{ { "b" 1 } } } } { "a" "c" } deep-at ] unit-test
|
{ f } [ H{ { "a" H{ { "b" 1 } } } } { "a" "c" } deep-at ] unit-test
|
||||||
{ 1 } [ H{ { "a" H{ { "b" 1 } } } } { "a" "b" } deep-at ] unit-test
|
{ 1 } [ H{ { "a" H{ { "b" 1 } } } } { "a" "b" } deep-at ] unit-test
|
||||||
{ 4 } [ H{ { 1 H{ { 2 H{ { 3 4 } } } } } } { 1 2 3 } deep-at ] unit-test
|
{ 4 } [ H{ { 1 H{ { 2 H{ { 3 4 } } } } } } { 1 2 3 } deep-at ] unit-test
|
||||||
|
|
||||||
|
{ { { 1 3 } { 2 4 } } } [ { 1 2 } { 3 4 } { } zip-as ] unit-test
|
||||||
|
{ V{ { 1 3 } { 2 4 } } } [ { 1 2 } { 3 4 } V{ } zip-as ] unit-test
|
||||||
|
{ H{ { 1 3 } { 2 4 } } } [ { 1 2 } { 3 4 } H{ } zip-as ] unit-test
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
! Copyright (C) 2012 John Benediktsson
|
! Copyright (C) 2012 John Benediktsson
|
||||||
! See http://factorcode.org/license.txt for BSD license
|
! See http://factorcode.org/license.txt for BSD license
|
||||||
|
|
||||||
USING: assocs kernel sequences ;
|
USING: arrays assocs assocs.private kernel sequences ;
|
||||||
|
|
||||||
IN: assocs.extras
|
IN: assocs.extras
|
||||||
|
|
||||||
|
@ -13,3 +13,11 @@ IN: assocs.extras
|
||||||
|
|
||||||
: deep-at ( assoc seq -- value/f )
|
: deep-at ( assoc seq -- value/f )
|
||||||
[ swap at ] each ;
|
[ swap at ] each ;
|
||||||
|
|
||||||
|
: zip-as ( keys values exemplar -- assocs )
|
||||||
|
dup sequence? [
|
||||||
|
[ 2array ] swap 2map-as
|
||||||
|
] [
|
||||||
|
[ dup length ] dip new-assoc
|
||||||
|
[ [ set-at ] with-assoc 2each ] keep
|
||||||
|
] if ;
|
||||||
|
|
Loading…
Reference in New Issue