forked from purescript/purescript-st
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathInternal.lua
More file actions
40 lines (30 loc) · 1.08 KB
/
Copy pathInternal.lua
File metadata and controls
40 lines (30 loc) · 1.08 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
return {
map_ = (function(f) return function(a) return function() return f(a()) end end end),
pure_ = (function(a) return function() return a end end),
bind_ = (function(a) return function(f) return function() return f(a())() end end end),
run = (function(f) return f() end),
["while"] = (function(f) return function(a) return function() while f() do a() end end end end),
["for"] = (function(lo)
return function(hi) return function(f) return function() for i = lo, hi - 1 do f(i)() end end end end
end),
foreach = (function(as) return function(f) return function() for i = 1, #as do f(as[i])() end end end end),
new = (function(val) return function() return {value = val} end end),
read = (function(ref) return function() return ref.value end end),
modifyImpl = (function(f)
return function(ref)
return function()
local t = f(ref.value)
ref.value = t.state
return t.value
end
end
end),
write = (function(a)
return function(ref)
return function()
ref.value = a
return a
end
end
end)
}