Arcからの挑戦を見たら言語を作りたくなった件
Arcからの挑戦が面白い。
次のようなプログラムを書け。
URL said (例えば http://localhost:port/said )は、入力フィールドひとつと、送信ボタンひとつのページを生成する。
送信ボタンが押されたら、2番めのページとして、"click here." と書かれたリンクひとつのページを生成する。
それがクリックされたら、3番めのページとして、"you said: ..." と書かれたページにいく。
ここで ... は、さっきの入力フィールドにユーザがタイプしたものだ。
ただし、3番めのページは、ユーザが実際にタイプしたものだけを表示すること。
つまり、入力フィールドの値を URL で渡してはいけない。そうしないと、最後のページの動作をURLで変えるようなことができてしまう。
というお題に関してArcだと次のように書ける、とのこと。
(defop said req (aform [w/link (pr "you said: " (arg _ "foo")) (pr "click here")] (input "foo") (submit)))
ね、パワフルでしょ? というお話。
うん、たしかに生のCGIを書いたりするのに比べるとすごく簡潔に書けてびっくり。
でもさあ、昔から思ってるんだけど、HTMLの画面遷移ってもう少し直感的に書けないものかなあ。たとえば上のお題の場合、次のように書ける言語がもしあったら便利だと思いません?
Start: input($msg) submit => Next Next: link("click here") => Result Result: "you said: " + $msg
ためしにRaccで作ってみようかな。それとも言語内DSLにするのが最近の流行りかな。