Skip to content

Commit fd5024a

Browse files
committed
Add intro.exs
1 parent d662f75 commit fd5024a

File tree

1 file changed

+61
-0
lines changed

1 file changed

+61
-0
lines changed

intro.exs

Lines changed: 61 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,61 @@
1+
# Stateless Transformer
2+
plus_one = Transformer.new(:numbers, &(&1 + 1))
3+
plus_one = Transformer.start(plus_one)
4+
flow = %{numbers: [1, 2, 3, 4]}
5+
new_flow = Transformer.call(flow, plus_one)
6+
new_flow[:numbers] |> Enum.to_list()
7+
8+
# Stateful Transformer
9+
sum_pairs = Transformer.new(
10+
:numbers,
11+
fn event, acc ->
12+
case acc do
13+
nil ->
14+
{[], event}
15+
number ->
16+
{[number + event], nil}
17+
end
18+
end
19+
) |> Transformer.start()
20+
21+
new_flow = flow |> Transformer.call(plus_one) |> Transformer.call(sum_pairs)
22+
new_flow[:numbers] |> Enum.to_list()
23+
24+
# Mixer
25+
flow = %{num1: [1, 2, 3], num2: [4, 5, 6]}
26+
mixer = Mixer.new([:num1, :num2], :numbers) |> Mixer.start()
27+
new_flow = flow |> Mixer.call(mixer) |> Transformer.call(plus_one)
28+
new_flow[:numbers] |> Enum.to_list()
29+
30+
# Composite
31+
plus_one = Transformer.new(:numbers, &(&1 + 1))
32+
mixer = Mixer.new([:num1, :num2], :numbers)
33+
composite = Composite.new([mixer, plus_one]) |> Composite.start()
34+
flow = %{num1: [1, 2, 3], num2: [4, 5, 6]}
35+
new_flow = flow |> Composite.call(composite)
36+
new_flow[:numbers] |> Enum.to_list()
37+
38+
# Complex composite
39+
plus_one = Transformer.new(:numbers, &(&1 + 1))
40+
mixer = Mixer.new([:num1, :num2], :numbers)
41+
composite1 = Composite.new([mixer, plus_one])
42+
43+
sum_pairs = Transformer.new(
44+
:numbers,
45+
fn event, acc ->
46+
case acc do
47+
nil ->
48+
{[], event}
49+
number ->
50+
{[number + event], nil}
51+
end
52+
end
53+
)
54+
55+
composite2 = Composite.new([sum_pairs])
56+
57+
composite = Composite.new([composite1, composite2]) |> Composite.start()
58+
59+
flow = %{num1: [1, 2, 3], num2: [4, 5, 6]}
60+
new_flow = flow |> Composite.call(composite)
61+
new_flow[:numbers] |> Enum.to_list()

0 commit comments

Comments
 (0)