#contents * ぜひ読むべし [#f4374a5d] -[[境界を越える: 継続とWeb開発、そしてJavaプログラミング:http://www.ibm.com/developerworks/jp/java/library/j-cb03216/]] -[[Programming Languages: Application and Interpretation by Shriram Krishnamurthi:http://www.cs.brown.edu/~sk/Publications/Books/ProgLangs/]] -- Schemeを軸に、現在の関数型言語を取り巻くトピックをまとめています。遅延評価、型理論、論理プログラミング、継続サーバなど。SICPの正統後継者登場。 - [[入門OCaml:http://book.mycom.co.jp/book/978-4-8399-2311-2/978-4-8399-2311-2.shtml]]第7章"OCamlで作ってみよう 〜MySQLと連係したバグトラックシステム〜" * Haskell [#y109f347] ** HAppS -- Haskell Application Server v 0.8.8 [#a00898c0] - http://happs.org/ ** WASH [#xadbdcf5] - http://www.informatik.uni-freiburg.de/~thiemann/WASH/ - 下村さんが試しました。 ** Kaya [#c3a1f280] - http://kayalang.org/ - [[有名なHaskellプログラムTop10入りしました。:http://haskell-news.blogspot.com/2008/01/top-10-most-popular-haskell-programs.html]] * OCaml [#g8c1d3ae] ** [[Ocsigen:http://www.ocsigen.org/]] [#n7983670] - OCamlによる継続ベースWeb開発フレームワーク [#ud483357] - 今井さんが試しています。 - [[論文 Typing web interaction with Objective Caml:http://www.pps.jussieu.fr/~balat/publications/2006mlworkshop-balat-ocsigen.pdf]] - 特徴 -- 継続ベースWebプログラミング -- XHTMLの静的チェック -- セッションの自動管理 -- モジュール指向 -- HTTPサーバの実装には協調スレッドを利用。 -- カウンタはこう書けます。 let compt = let next = let c = ref 0 in (fun () -> c := !c + 1; !c) in register_new_service ~url:["compt"] ~get_params:unit (fun _ () () -> return (html (head (title (pcdata "counter")) []) (body [p [pcdata (string_of_int (next ()))]]))) -- See this example [[here:http://www.ocsigen.org/tuto/compt]] - サンプル(いつか消す): http://tsukimi.agusa.i.is.nagoya-u.ac.jp:18080/eliomsample/ -- [[けいご]] &new{2007-07-12 (木) 08:34:01}; - サンプル(いつか消す): http://tsukimi.agusa.i.is.nagoya-u.ac.jp:18080/eliomsample/ -- [[けいご]] &new{2007-07-12 (木) 08:48:01}; * Scheme/Lisp [#df260efd] ** SISCweb [#rc3b2709] - http://siscweb.sourceforge.net/ - SISCweb is a framework to facilitate writing stateful Scheme web applications in a J2EE environment. - J2EE上で動くScheme処理系SISCは、継続を完全にサポートしています。それを使って継続サーバを作ったようです。 ** Hop [#aae7fafa] - http://hop.inria.fr/ - Hop is a new programming language designed for the Web 2.0. - 独自のScheme処理系Biglooと、Scheme->JavascriptコンパイラであるScheme2jsを、Web開発に活用している。 ** [[Implementation and Use of the PLT Scheme Web Server:http://www.cs.brown.edu/~sk/Publications/Papers/Published/khmgpf-impl-use-plt-web-server-journal/]] [#u67237c8] - PLT-Scheme製の継続サーバ。Schemeではこれが最先端と思われる。 - [[Experience Report: Scheme in Commercial Web Application Development:http://blog.plt-scheme.org/2007/08/experience-report-scheme-in-commercial.html]] [#ja0484e9] ** [[Kahua:http://www.kahua.org/]] [#obb1687a] - 日本人開発のScheme処理系であるGaucheを使用。CPSスタイルの継続サーバ。 ** [[Common Cold:http://www.discontinuity.info/~pkhuong/common-cold/]] [#i21fb07d] - Common Lisp 製 継続サーバ。 クロージャや継続をシリアライズできるらしい。 - 開発者のblog http://www.pvk.ca/Blog/Latest.html *Smalltalk [#s9170dc3] **[[Seaside:http://www.seaside.st/]] [#n0dcc05c] - 継続サーバの実装の最先端。デバッグ環境の充実は他の追随を許していない。 - [[Seasideの開発者のblog:http://www.avibryant.com/2006/05/ongoing-continu.html]] 継続サーバのゆくえについて語っている *Ruby [#dfc75ee3] ** Ruby on Rails [#jdb881e2] - がんばればだれでもできることを、がんばらなくてもできるようにしている - テーブル名(複数形)とクラス名(単数形)を自動で対応させる(ActiveRecord) - クラステンプレートの自動作成(scaffold) - 標準ライブラリの大幅な拡張(ActiveSupport) - Webサーバがついてくる。テストはこれでして、本番はApacheに移す - FastCGIが必須なほど重いらしい *Javascript [#l22adbfd] ** Cocoon2 [#rd486153] - 継続付きの特別なJavascript処理系、Rhinoを使っている。FlowScriptは、継続を利用して、Web開発に構造化プログラミングの福音をもたらす。 ** Rhino in Spring [#h5bde9ac] - http://rhinoinspring.sourceforge.net/ - Rhinoの継続と、SpringのMVCの利点を併せ持つ、継続サーバです。 ** Helma [#m64aa669] - http://dev.helma.org/ - http://gobi.helma.at/Documentation/Developers/MarkupLib/ - [[ウノウラボ Unoh Labs: JavaScriptだけでWebサイトが構築できるHelma:http://labs.unoh.net/2007/10/javascriptwebhalma.html]] - [[MOONGIFT: » サーバサイドJavaScriptフレームワーク「Helma」:オープンソースを毎日紹介:http://www.moongift.jp/2007/07/helma/]] * 継続について [#i188a441] - [[継続]] - [[WebBasedアプリケーションと継続について、わかりやすい説明:http://www.shiro.dreamhost.com/scheme/wiliki/wiliki.cgi?Scheme%3aCPS]] * 継続サーバとは [#z633f1a1] -[[もとネタになった、Queinnec氏の論文PDF:http://www-spi.lip6.fr/~queinnec/PDF/webcont.pdf]] - GaucheとFastCGIで作ってみました。 http://d.hatena.ne.jp/Gemma/20070707 - Javascriptで作ってみました。ブラウザのみで動くのが利点。http://d.hatena.ne.jp/Gemma/20070812