2006-12-01から1ヶ月間の記事一覧
Christian Queinnec の The Influence of Browsers on Evaluators or,. Continuations to Program Web Servers http://www-spi.lip6.fr/~queinnec/PDF/webcont.pdf を読みなおし中。 半年前に読んだけど、あれから自分の中で、限定継続、CPS、Hop、Haskell、…
Kahuaはアプリケーションサービスを構築するための、継続ベースのフレームワークです。で、サンプルにカウンターを作る話がでてくる。 http://www.kahua.org/cgi-bin/kahua.fcgi/kahua-web/show/doc/hello-kahua#H-1o28l31 リンクをクリックすると、数をどん…
function searchSales() { var url = 'http://yourserver/app/get_sales'; var myAjax = new Ajax.Request( url, { method: 'get', onComplete: showResponse }); } function showResponse(originalRequest) { //put returned XML in the textarea $('result…
なぜ spec ファイルを修正するの? rpmbuild --rebuild tetex-jisfont-1-6.src.rpm を実行すると、 警告: ユーザ t-matsuu は存在しません - root を使用します 警告: グループ supramol は存在しません - root を使用します 警告: ユーザ t-matsuu は存在し…
http://homepage2.nifty.com/t-matsuu/install-memo/fc/tetex-jisfont.html http://homepage2.nifty.com/t-matsuu/install-memo/fc/tetex-jsclasses.html の src.rpm をダウンロード spec ファイルの修正と、インストール (tetex-jsclasses-060725-1.src.rpm…
yum install tetex*
狂気 「There's no dark side of the moon really. Matter of facts it's all dark(本当は月の暗い側なんて存在しないんだよ。何故なら、すべてが闇そのものだからね)」という台詞(つまり、実際は何もかもただ「明るい」のは「ただ太陽の光が当たっている…
OCaml チュートリアル 今日、Labels の日本語訳をコミットしました。 現在、このチュートリアルは 日、独、仏、伊 に訳されています。 日本語版はその中で最も、翻訳が進んでいます。 はじめの一歩 - 基本中の基本 OCamlプログラムの構造 データ型とパターン…
もう鍛冶屋の包丁議論は聞きあきた。意味がない。 学会に論文で発表の形をとっておけば、有利だっただろうに。
append、append!といった関数があるが、Cons Listをもらったら append 、 Cons! List をもらったら append! と、 型に応じたアルゴリズムを期待する。 Cons って"使うたびに変わる"のか? ・・・ "メモリアドレスが違う" だから、 (Cons'' 3 (Cons' 2 (Cons 1…
上の例でいうと、自動で "その" が付いていくようなものだ。 線形型を扱う関数も線形型である。だから、"買う"も!マークがつく。 "財布"でみかんを買う "その財布"でりんごを"さらに買う"
だめな例: 財布でみかんを買う 財布でりんごを買う よい例: "財布"でみかんを買う "その財布"でりんごを買う
100円あれば みかんが買える 100円あれば りんごが買える だからといって、"100円あれば みかんが買える かつ りんごが買える" わけではない。
Wadler の Linear Types Can Change the World! のゼミがあった。 古い論文なので、Clean の Uniq Type を見たほうが話が新しいかもしれない。 以下、自分の理解。
1 + 2 は、逆ポーランド記法で、1 2 + となる。 (1 + 2) * (3 - 4) は、 1 2 + 3 4 - * だ。 逆ポーランド記法なんて読めないと思うかもしれないが、日本語だと思えばスラスラ読める。 Forthの系譜、逆ポーランド記法の Joy や Factor をちょっと見てみた。…
来週のゼミで、Wadler の、 Linear types can change the world! をやるらしいので、読んでみた。線形型の値は、コピー無用、破壊的代入上等。 コピー無用とは、例えば、銀行口座への参照は必ずひとつだけと保証することで、SICPであったような、reader & wr…
関数単位のCGIから、Ajaxでちびちび結果を受けとって、組み合わせるというスタイルが可能。 HTTPサーバの機能はApacheに任せて、他の、CGI+Ajax+DHTMLの自動化の部分は切り離せないだろうか?
πを返す CGI を、 (define-service (pi) (* 4 (atan 1)))などと設置したり。 だが、無名関数がSchemeにあることから連想して、無名CGIを考えてみよう。 それが $ 記法で、 (<HTML> (<BODY> (<BUTTON> :onclick ~(alert $(* 4 (atan 1))) "Click me to see an approximation of PI</button></body></html>…
(define-service (server-date) (current-date)) (<HTML> (<BUTTON> :onclick ~(with-hop ($server-date) (lambda (h) (alert h))) "Server time"))と書いてやると、 Hop はそれ自体がHTTPサーバ。 define-service で、自動で CGI を設置してくれる。 HTMLは、タグをS式で</button></html>…
私たちの手元にあるのは、HTTPサーバと、CGIと、Javascriptと、Ajaxだ。 HTTPサーバを立てる。 CGIを Bigloo (Scheme処理系) で書いて設置。例えばURLは、http://hoge.com/serverdate.cgi HTMLを書く。Ajax なら、 prototype.js を使おう。こんな感じ。 <html> <head> <script src="prototype.js" type="text/javascript"></script> <script type="text/javascript"></head></html>
Hop, a Language for Programming the Web 2.0をわかりやすく説明しようと思う。サーバ側の現在時刻を、Ajaxで受け取って、動的に表示するHTMLを書くことを考える。
もしも、ブラウザの上にのっているのが OCaml の VM で、 OCaml で書いたアプレットを動かせていたら、もっとよかった。 もちろん、 Scheme のアプレットもいいし、 Haskell のアプレットもいい。 ブラウザの上にそういう VM を載せやすくするための仕組み、…
と考えていると、分散システムのPlan9の考え方というのは、よだれがでるくらいにうまい話だとつくづく思う。 しかし、普及しなけりゃ絵に描いた餅だ。 現在、ブラウザの上に、Javascript の VM だの Java の VM だのがのっているわけで、この VM 同士を 分散…
今週の OCaml nagoya で、「OCaml をブラウザでクライアント側で実行できたら面白い」という話になり、皆で検討した。 そういえば、アラン・ケイもそんなことを言っていた。 http://itpro.nikkeibp.co.jp/a/it/alacarte/interview0626/alan_5.shtml Webの技…
Haskellを良く言う人は、Haskellを十分わかっていない。 Haskellを悪く言う人は、Haskellを全くわかっていない。それはさておき。http://www.ocaml-tutorial.org/ja の翻訳が進んでいます。 今日、If Statements, Loops and Recursion の邦訳をコミットしま…
range 関数を考える。シンプルに、 (define (range a b) (if (> a b) [] (cons a (range (+ a 1) b))))これは、最後に呼び出される関数が cons なので、末尾再帰ではない。末尾再帰にすると、 (define (range a b l) (if (> a b) (reverse! l) (range (+ a 1…