Top
Photo Drawings Software Writing Reading Memo Study Profile Bookmark 
Amethyst DumLambda PetitLambda Yamanba JSharp JFlat OOPS yash KumonoIto ML Toys 

MLでWebサーバ作成

教科書では、Webクライアントをプログラミング例として取り上げています。 では、その通信相手となるWebサーバもMLで作成してみましょう。

Webで使われているHTTP(Hyper Text Transfer Protocol)は、 RFC 2616(HTTP/1.1) を見れば分かるように 結構なボリュームの仕様で定義されています。 これをフルに実装すると大変です。 たとえばApacheのソースコードは、20,000行にもなります。

しかし、ごく基本的な機能に限れば、Webサーバ(HTTPd)を作成するのは難しいことでは ありません。 つぎのようなさまざまな言語でミニサイズのWebサーバが実装されています。

これらと同じように、MLでもごく少ないコード量でWebサーバを実装できます。 現在のバージョンは100行ほどの小ささです。 しかし、当然のことながら、ごく基本的な機能しか実装されていません。 そこで、講義で学んだことを応用し、各自でこのWebサーバを拡張してみてください。

ソース

バージョン日付ソース
0.12002/04/01httpd_0.1.sml

参考

関数型言語とWeb

関数型言語とWebとの関連について、 つぎのようなソフトウェア、研究があります。

ソフトウェア

Lispache
Lispで実装されているWebサーバです。 設計および開発は苫米地博士 によるものです。 苫米地博士は、Lispを武器にソフトウェアを開発しているCRL を社長をされています。 Lispacheについて苫米地博士が こちら で語っておられます。
The Fox Project
カーネギーメロン大学で展開されているプロジェクトです。 MLをベースとして、プログラミング言語の設計および実装、 ソフトウェア開発への応用について研究しています。
このサイトも、MLで記述されたWebサーバで運営されています。
ML server pages
ASP(Active Server Pages)JSP(Java Server Pages)のSMLバージョンです。 HTML中に埋め込まれたStandard MLのコードを クライアントへのレスポンス時に評価することで、 動的なページ生成を実現します。
HWS(Haskell Web Server)
Haskellで記述されたWebサーバです。
ソース, 論文
SMLserver
AOL(America On Line)で使われているWebサーバ(AOLserver)へのプラグイン。 Webサーバやデータベースへのインタフェースを提供する。
MMM
Camlで記述されたWebブラウザ。 日本人が開発に関わっています。

論文

Erik Meijer, Dannyy van Velzen Haskell Server Pages Functional Programming and the Battle for the Middle Tier
Erik Meijer Server side web scripting in Haskell
Erik Meijer, Daan Leijen, and Jim Hook. Client-side Web Scripting with HaskellScript