javascript による、継続渡しのWebアプリケーションです。
- http://eva-lu-ator.net/~gemma/geocities/jscont/sum.html
- おなじみ、足し算をするサンプル。Backボタンが機能するのがポイントです。
- http://eva-lu-ator.net/~gemma/geocities/jscont/color.html
- 「ユーザがこのリンクをクリックしたら、色選択ページに行き、そうしたらここに戻って来い」。
Viawebにおける、サブルーチンをシミュレートするクロージャの、色選択の例は、きっとこんな動作だったのではと思います。
'変更'ボタンに、カラーピッカーへの遷移をセットし、カラーピッカーの中の'gethex'ボタンに、"スタックを戻るように見える、新しいcgi呼び出し"のような、
action(function() {return $H({color: picker.get('hex')})}, main)
をセットします。
ここでも、Backボタンが機能するのがポイントです。
- http://eva-lu-ator.net/~gemma/geocities/jscont/shop.html
- 名前を変更しても、買い物をしても、Backボタンで帳消しにできます。
このように継続を使うことで、境界を越える: 継続とWeb開発、そしてJavaプログラミングにあるように、
Submitボタンを2回押すと、多くの場合は同じアイテムを誤って2つ注文してしまうことになります。そのまま店を出て2週間後に戻ると、(そんな振る舞いは想定していないのに)同じアイテムが2つ、カートに載っているかも知れません。
という問題はなくなります。ただ、
ユーザーから見た動作が変わってしまう。継続サーバーが一般的に使用されるようになると、ユーザーから見た動作が異なってきます。「戻る」ボタンは実際に動作するため、一部のユーザーは混乱します。例えば、買い物カゴに何かを入れた後に「戻る」ボタンをクリックした場合、皆さんはアプリケーションがそれを買い物カゴから出してしまうことを期待するでしょうか。
という問題はあります。