rudus/sandbox.ld

32 lines
529 B
Plaintext
Raw Normal View History

2025-06-28 20:40:31 +00:00
fn agent (val) -> receive {
(:set, new) -> agent (new)
(:get, pid) -> {
send (pid, (:response, val))
2025-06-28 20:40:31 +00:00
agent (val)
}
(:update, f) -> agent (f (val))
}
fn agent/set (pid, val) -> {
send (pid, (:set, val))
val
}
fn agent/get (pid) -> {
send (pid, (:get, self ()))
receive {
(:response, val) -> val
}
2025-06-28 00:41:29 +00:00
}
2025-06-27 00:30:40 +00:00
2025-06-28 20:40:31 +00:00
fn agent/update (pid, f) -> {
send (pid, (:update, f))
agent/get (pid)
}
2025-06-28 00:41:29 +00:00
2025-06-28 20:40:31 +00:00
let myagent = spawn! (fn () -> agent (42))
2025-06-28 00:41:29 +00:00
2025-06-28 20:40:31 +00:00
print! ("incrementing agent value to", agent/update (myagent, inc))
2025-06-30 16:48:50 +00:00
:done!