summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2015-10-30 20:36:07 +0100
committerDimitri Sokolyuk <demon@dim13.org>2015-10-30 20:36:07 +0100
commitb44ace904d01840e1d14a3a34af83eb7763d80b9 (patch)
treea310c66a8974dc2f4c7943b123f55dbcb96fa09c
parent5e788053dbc150a4c79065509b266d2bcad865e0 (diff)
Add akkumulator
-rw-r--r--src/akk.erl24
1 files changed, 24 insertions, 0 deletions
diff --git a/src/akk.erl b/src/akk.erl
new file mode 100644
index 0000000..a5989f2
--- /dev/null
+++ b/src/akk.erl
@@ -0,0 +1,24 @@
+-module(akk).
+
+-export([new/0, add/1, flush/0, collect/1]).
+
+new() ->
+ register(akkPid, spawn(?MODULE, collect, [[]])).
+
+add(E) ->
+ akkPid ! {add, E}.
+
+flush() ->
+ akkPid ! {flush, self()},
+ receive
+ L -> L
+ end.
+
+collect(L) ->
+ receive
+ {add, E} ->
+ collect(L ++ [E]);
+ {flush, Pid} ->
+ Pid ! L
+ end.
+