annotate website/src/examples/map_reduce.txt.luan @ 2171:8b77bd42864d

add add Thread.map_reduce
author Franklin Schmidt <fschmidt@gmail.com>
date Sun, 22 Mar 2026 19:24:52 -0600
parents
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
2171
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
1 local Luan = require "luan:Luan.luan"
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
2 local error = Luan.error
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
3 local ipairs = Luan.ipairs or error()
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
4 local Thread = require "luan:Thread.luan"
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
5 local Io = require "luan:Io.luan"
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
6 local Http = require "luan:http/Http.luan"
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
7
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
8
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
9 local function map(_)
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
10 return {1}
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
11 end
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
12
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
13 local function reduce(lists)
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
14 local n = 0
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
15 for _, list in ipairs(lists) do
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
16 n = n + list[1]
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
17 end
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
18 return {n}
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
19 end
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
20
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
21 local mr = Thread.map_reduce("count",map,reduce)
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
22
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
23 return function()
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
24 local list = mr(nil)
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
25 local n = list[1]
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
26 Io.stdout = Http.response.text_writer()
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
27 %>count: <%=n%><%
8b77bd42864d add add Thread.map_reduce
Franklin Schmidt <fschmidt@gmail.com>
parents:
diff changeset
28 end