1
+ // Native
1
2
const fs = require ( 'fs' )
2
3
4
+ // Packages
3
5
const Task = require ( 'data.task' )
4
6
const { List } = require ( 'immutable-ext' )
5
7
@@ -14,14 +16,25 @@ const readFileTask = FutureTask(fs.readFile)
14
16
const files = List ( [ 'config.json' , 'config1.json' ] )
15
17
16
18
console . 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(..., ...) : `
18
22
)
19
23
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
+ */
21
31
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
+ )
27
40
. fork ( console . error , console . log )
0 commit comments