やっぱり無名アクタには惹かれるなぁ
状態を持たないアクタ Add に 1 と 2 を渡し、その結果をアクタ Receiver に送信してもらうメッセージ式は、
Add 1 2 [Receiver result]
みたいになるのかな。意味は Receiver.result(Add(1, 2)) みたいな感じ。
次に、Timeout アクタを実装してみる。まずは使い方から。
Add 1 2 [Timeout.newSecond(10, [Receiver result])]
10 秒待って何もメッセージが来なかったら、Receiver.result(void) を起動する。
そして、この実装はこんな感じになるはず。
actor Timeout is constructor newSecond(Time, Redirect) is @Redirect = Redirect Delay on Time [This timeout] end procedure timeout is void >> @Redirect end procedure Value is Value >> @Redirect end end
……たぶん動くんじゃないのかな……。