aboutsummaryrefslogtreecommitdiffstats
path: root/yql/essentials/tests/s-expressions/suites/InMem/StreamFold1Map.yql
blob: 5acfe5d46d81b4b8ec2bb12d4ffc0cf3d49e2bf8 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
(
#comment
(let config (DataSource 'config))
(let world (Configure! world config 'PureDataSource 'yt))

(let res_sink (DataSink 'result))
(let list (AsList
'((Uint32 '1) (String 'r))
'((Uint32 '1) (String 'a))
'((Uint32 '2) (String 'b))
'((Uint32 '3) (String 'b))
'((Uint32 '5) (String 'i))
'((Uint32 '8) (String 't))))

(let init (lambda '(item) (block '(
    (let key (Nth item '0))
    (let val (Nth item '1))
    (let skey key)
    (let sval val)
    (let new_item '(key val skey sval))
    (let new_state '(skey sval))
    (return '(new_item new_state)
)))))

(let update (lambda '(item state) (block '(
    (let key (Nth item '0))
    (let val (Nth item '1))
    (let skey (Nth state '0))
    (let sval (Nth state '1))
    (let skey (+ skey key))
    (let sval (Concat sval val))
    (let new_item '(key val skey sval))
    (let new_state '(skey sval))
    (return '(new_item new_state)
)))))

(let result (Fold1Map (Iterator list) init update))

(let world (Write! world res_sink (Key) (Collect result) '('('type))))
(let world (Commit! world res_sink))
(return world)
)