Mercurial Hosting > luan
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 |
| 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 |
