結論から言うとできてません。
やたら早く目がさめたので遊んでる。
Haskellはもういいよって言ったけど、なんか適当なHaskell実装は一度は見てみたいなぁとは思っていて、Mighttpd2のソースを見てみたら案外量が少なかったのでちょっとやる気が出た。気になることはソースに聞こう。
やるやらないは別として、ちょっといじれる状況くらいは作っておこうと思って、ビルドしてみる。
kazu-yamamoto/mighttpd2 - GitHub
ちなみに普通に入れるならcabalで一発っぽい。
# cabal install mighttpd2
1と2の違いはわからない。
cabalってビルドもできたのかー。などと思いながらさっそく
# git clone git://github.com/kazu-yamamoto/mighttpd2.git # cd mighttpd2 # cabal configure
ってやったらcabal updateしろって怒られたのでとりあえず
# cabal update
そしてconfigで足りないと言われたパッケージを入れる。
# cabal configure (足りないパッケージ一覧) # cabal install hashmap http-conduit http-date http-types unix-bytestring wai wai-app-file-cgi wai-logger-prefork warp
結構、どころじゃない時間がかかった。
満を持してビルド。一旦configureしないといけないらしい。
# cabal configure
Resolving dependencies...
Configuring mighttpd2-2.5.0...
# cabal build
...(略)...
Mighty.hs:88:16:
Couldn't match expected type `enumerator-0.4.18:Data.Enumerator.Internal.Iteratee
BS.ByteString IO t0'
with actual type `conduit-0.0.4:Control.Monad.Trans.Resource.ResourceT
m0 H.Manager'
In a stmt of a 'do' expression: mgr <- H.newManager
In the expression:
do { mgr <- H.newManager;
fileCgiApp
(cspec lgr) (filespec getInfo) (revproxyspec mgr) route req }
In the second argument of `($)', namely
`\ req
-> do { mgr <- H.newManager;
fileCgiApp
(cspec lgr) (filespec getInfo) (revproxyspec mgr) route req }'
コケた! expectedとactualの型が全然違うように見えるけど大丈夫か? まあ大丈夫じゃないんだけど。
と、ここまでやったところで、私が本当に知りたいところ(Haskellって何ができないの?という疑問)はここでインストールしたパッケージの中にあるんじゃないかって気がしてきた。
ので調べる。
# cabal list PACKAGE
で調べられるらしい。
* hashmap
Synopsis: Persistent containers Map and Set based on hashing.
Default available version: 1.2.0.1
Installed versions: 1.2.0.1
Homepage: http://git.auryn.cz/haskell/hashmap/
License: BSD3
* http-conduit
Synopsis: HTTP client package with conduit interface and HTTPS support.
Default available version: 1.1.1
Installed versions: 1.1.1
Homepage: http://www.yesodweb.com/book/http-conduit
License: BSD3
* http-date
Synopsis: HTTP Date parser/formatter
Default available version: 0.0.1
Installed versions: 0.0.1
License: BSD3
* http-types
Synopsis: Generic HTTP types for Haskell (for both client and server code).
Default available version: 0.6.8
Installed versions: 0.6.8
Homepage: https://github.com/aristidb/http-types
License: BSD3
* unix-bytestring
Synopsis: Unix/Posix-specific functions for ByteStrings.
Default available version: 0.3.5
Installed versions: 0.3.5
Homepage: http://code.haskell.org/~wren/
License: BSD3
* wai
Synopsis: Web Application Interface.
Default available version: 0.4.3
Installed versions: 0.4.3
Homepage: https://github.com/yesodweb/wai
License: BSD3
* wai-app-file-cgi
Synopsis: File/CGI App of WAI
Default available version: 0.4.4
Installed versions: 0.4.4
Homepage: http://www.mew.org/~kazu/
License: BSD3
* wai-logger-prefork
Synopsis: A logging system for preforked WAI apps
Default available version: 0.1.2
Installed versions: 0.1.2
License: BSD3
* warp
Synopsis: A fast, light-weight web server for WAI applications.
Default available version: 0.4.6.3
Installed versions: 0.4.6.3
Homepage: http://github.com/yesodweb/wai
License: BSD3
私が知りたいのはこいつらの正体なんじゃなかろうか。waiあたりかなぁ。
っていうかmighttpd2.cabalの中身見ればモジュール一覧は書いてあった。networkとかかなぁ。
ビルドはまだできていません。