[ number>string ] 3 parallel-napply\r
{ [ "a" append ] [ "b" append ] [ "c" append ] } parallel-spread\r
] unit-test\r
+\r
+{ H{ { 0 4 } { 2 6 } { 4 8 } } } [\r
+ H{ { 1 2 } { 3 4 } { 5 6 } } [\r
+ [ 1 - ] [ 2 + ] bi*\r
+ ] parallel-assoc-map\r
+] unit-test\r
! Copyright (C) 2008 Slava Pestov.
! See http://factorcode.org/license.txt for BSD license.
-USING: arrays combinators concurrency.count-downs
+USING: arrays assocs combinators concurrency.count-downs
concurrency.futures fry generalizations kernel macros sequences
sequences.private sequences.product ;
IN: concurrency.combinators
: parallel-map ( seq quot: ( elt -- newelt ) -- newseq )
[future] map future-values ; inline
+: parallel-assoc-map-as ( assoc quot: ( key value -- newkey newvalue ) exemplar -- newassoc )
+ [
+ [ 2array ] compose '[ _ 2curry future ] { } assoc>map future-values
+ ] dip assoc-like ;
+
+: parallel-assoc-map ( assoc quot: ( key value -- newkey newvalue ) -- newassoc )
+ over parallel-assoc-map-as ;
+
: 2parallel-map ( seq1 seq2 quot: ( elt1 elt2 -- newelt ) -- newseq )
'[ _ 2curry future ] 2map future-values ;