Factorで継続

Factorには継続を扱うためのモジュール(Factorでは関数(Factorではwordと言う)を集めたものをvocabularyと言う)にcontinuationsというものがあります。


Factor初めて1日目とかで面白い例とか出せませんが、取りあえず使えるかどうかだけやってみたかったので、
http://en.wikipedia.org/wiki/Continuation


良く見る継続の恩恵に授かれてるかっていうと微妙な例をそのまんまFactorで書いて見ようと思います。


Factorでcall/ccに対応するwordは、continuations.callcc0でコードを書き下してみると

SYMBOL: name !nameという変数を作ります
SYMBOL: var  !上に同じ
0 var set !varに0を代入

[ name set ] callcc0 var get 1+ var set

この式を実行した時に、nameの中にcontinuationが入り、varが1となります。
以後は

name get continueation !name getで取り出して、continuation wordでresumeする

と実行すると、varがその度に一度づつ増えていきます。


ローカルスコープで変数使って、2本の継続をさせたいんですけどねー。まだ何も分かってない感じなので夜にでも