http://d.hatena.ne.jp/kazu-yamamoto/20120607/1339045616
遊ぶかもしれないのでメモ。
Haskell のライブラリは、積極的に Haskell Platform 側に
逃がしているようなので、Haskell 遊びをするなら、
ghc だけじゃ駄目っぽい。
Haskell Platform についての記事は以下とか。
一般向けの「Haskell Platform」とインストール・ツールの「cabalコマンド」
http://itpro.nikkeibp.co.jp/article/COLUMN/20100406/346695
Haskell 関連)
高速WebサーバMighttpdのアーキテクチャ --> [2012-05-29-4]
LL飲み会でHaskellの洗脳をされる --> [2006-09-15-6]
Haskell使いのための C++ --> [2006-10-08-6]
map からモナドを理解する --> [2006-10-09-5]
「Lisp脳」の謎に迫る - Schemeプログラマの発想 --> [2007-05-16-4]
Haskell で書かれたウェブ付箋アプリ lino --> [2008-08-08-2]
Haskell≠現場言語って? --> [2010-08-20-1]
http://www.iij.ad.jp/company/development/tech/activities/mighttpd/
IIJ-II技術研究所では、2009年の秋からMighttpdbl(mightyと読む)という
Webサーバの開発を始め、オープンソースとして公開しています。
僕は、コードの見通しが悪いという問題を解決するために、
純粋関数型言語Haskellの主要コンパイラであるGHC(Glasgow Haskell Compiler)
が提供している軽量スレッドを利用しました。
軽量スレッドとは、イベント駆動の上に実現されているユーザ空間のスレッドです。
最近のコンピュータであれば、10万個起動しても問題なく動作します。
..
軽量スレッドを使えば、従来のスレッド・プログラミングと同様、
見通しのよいコードが書けます。また、軽量スレッドを切り替えるのは
GHCのランタイムですから、コンテキストスイッチは起こりません。
関数型言語は遅いとか実用的でないと誤解している方もたくさん
いらっしゃるようですが、我々のベンチマークでは、
Mighttpdはnginxと比肩する性能を出しています。
Haskell だと最初に読むのは悩むけど、
一旦理解すれば、見通しは良くなりそうだし、書くのも楽なのかもなあ。
配布元を見ると
Mighttpd
http://mew.org/~kazu/proj/mighttpd/en/
This domain "Mew.org" is provided with Mighttpd2.
mew.org は mighttpd2 で動いてるのか。
telnetで叩いてみた。
% telnet mew.org 80
...
HEAD / HTTP/1.0
...
Server: Mighttpd/2.6.0
ほんとだ。
実際のコードは、GitHub↓から見れる。
https://github.com/kazu-yamamoto/mighttpd2
ざっと中身を見ただけでは何がなんだかさっぱりわかんないけど、
たしかにコードは綺麗に見える。
ファイル名からある程度こういう処理なんだろうなという想像もつく。
コードリーディング用のドキュメントとかどっかにないのかしら?
関連)
LL飲み会でHaskellの洗脳をされる --> [2006-09-15-6]
Haskell使いのための C++ --> [2006-10-08-6]
map からモナドを理解する --> [2006-10-09-5]
「Lisp脳」の謎に迫る - Schemeプログラマの発想 --> [2007-05-16-4]
Haskell で書かれたウェブ付箋アプリ lino --> [2008-08-08-2]
Haskell≠現場言語って? --> [2010-08-20-1]