1+ // Native
12const fs = require ( 'fs' )
23
4+ // Packages
35const Task = require ( 'data.task' )
46const { List } = require ( 'immutable-ext' )
57
@@ -14,14 +16,25 @@ const readFileTask = FutureTask(fs.readFile)
1416const files = List ( [ 'config.json' , 'config1.json' ] )
1517
1618console . log (
17- `List(['config.json', 'config1.json']).traverse(Task.of, fn => readFileTask(fn, 'utf-8')).fork(..., ...) : `
19+ `List(['config.json', 'config1.json'])
20+ .traverse(Task.of, fn => readFileTask(fn, 'utf-8'))
21+ .fork(..., ...) : `
1822)
1923
20- files
24+ /*
25+ 'files' is List of files 'List(a)'
26+ 'map' preserves the List wrapper, so we can get List of Tasks 'List(Task(a))'
27+ 'traverse' applies the function (a -> f b) to each List entry,
28+ and wraps all together into single Task of Lists,
29+ running the tasks in parallel
30+ */
2131
22- // we have list of files but want task of lists
23- // 1st argument 'Task.of' lifts to Task - applicative functor
24- // (needed as type hint in case of failure or never running the function)
25- // 2nd argument is traversing function a -> f b
26- . traverse ( Task . of , fn => readFileTask ( fn , 'utf-8' ) )
32+ files
33+ . traverse (
34+ // type hint, applicative functor
35+ // needed in case of failure or never running the function
36+ Task . of ,
37+ // traversing function a -> f b
38+ fn => readFileTask ( fn , 'utf-8' )
39+ )
2740 . fork ( console . error , console . log )
0 commit comments