Skip to content

Commit 9fe32ef

Browse files
committed
sequence in terms of fold
1 parent f2e449a commit 9fe32ef

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

effect/fold.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,3 +31,9 @@ def folder(acc, element):
3131
return acc.on(lambda r: element.on(lambda r2: f(r, r2)))
3232

3333
return reduce(folder, effects, _sneaky)
34+
35+
36+
def sequence(effects):
37+
def folder(acc, element):
38+
return acc + [element]
39+
return fold_effect(folder, [], effects)

effect/test_fold.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
import operator
33

44
from effect import Effect, sync_perform
5-
from effect.fold import fold_effect
5+
from effect.fold import fold_effect, sequence
66
from effect.testing import SequenceDispatcher
77

88

@@ -19,3 +19,18 @@ def test_fold_effect():
1919
with dispatcher.consume():
2020
result = sync_perform(dispatcher, eff)
2121
assert result == 'NilEiBeeCee'
22+
23+
24+
def test_sequence():
25+
effs = [Effect('a'), Effect('b'), Effect('c')]
26+
dispatcher = SequenceDispatcher([
27+
('a', lambda i: 'Ei'),
28+
('b', lambda i: 'Bee'),
29+
('c', lambda i: 'Cee'),
30+
])
31+
eff = sequence(effs)
32+
33+
print "what the heck is sequence returning?", eff
34+
with dispatcher.consume():
35+
result = sync_perform(dispatcher, eff)
36+
assert result == ['Ei', 'Bee', 'Cee']

0 commit comments

Comments
 (0)