2010-01-01から1年間の記事一覧
Haskell では、Y コンビネータが作れないと誤解している人がいるので、できることを示すと同時に、これまで学んだことをまとめてみます。 遅延評価を活かした Y コンビネータ 関数名を用いた再帰を使ってよいなら、Haskell では遅延評価のおかげで、Y コンビ…
おかげさまで「プログラミングHaskell」の増刷が決まりました。第1版第1刷の誤植表に載っていない間違いを発見した人は、今すぐ報告していただけると助かります。間に合えば、第2刷に反映したいと思います。プログラミングHaskell作者: Graham Hutton,山本和…
GHC 6.10 に付随していた Parsec のバージョンは 2 だ。現在の Parsec のバージョンは 3 であり、以下のような特徴がある。 モナド変換子として実装されているので、下回りを自由に変更できる。 ByteString をモナドのインスタンスにすることで、入力に Byte…
Haskellers Meeting 2010 Spring で発表した僕のスライドを以下のように公開しました。 Haskell で Web サーバーを実装してみました Experience on implementing a Web server in Haskell
Snow Leopard で Emacs 22.3 がコンパイルできなかったので、コンパイルできるようにしたソースを、Gitoriusで公開しました。Macports のパッチとか、inline パッチとか、Goby の View モードでウインドウタイトルが消えるハックとかが入っています。詳しく…
Haskellers Meeting 2010 Springで、Simon さんに STM(Software Transaction Memory)の話をして頂くようにお願いしました。参加者の人があらかじめ予習できるように、参考書として Real World Haskell とビューティフルコードを挙げておきました。Real World…
Simon Peyton-Jones will visit to Tokyo on 16 April 2010. So, we will organize a small conference among Haskell community in Tokyo. Three presentations including Simon's one will be given. Please register yourself on ATND (written in Japane…
4月16日に、Haskell 界の大御所 Simon Peyton-Jones さんが東京にやってきます!彼のお話を聞きたい人は、今すぐ ATND で参加表明して下さい。
重い腰を上げて、3つのソースを公開しました。 Piki Pikiのソースを github で公開し、Pikiバージョン0.3.0をHackageに登録しました。バージョン0.2からの機能追加はありません。Cabal に対応したことと、Applicative スタイルに直せるところは直したことが…
Haskell で書いた HTTP サーバー Mighttpdをリリースしました。Mighty (マイティー)と読みます。興味のある人は、遊んでみて下さい。これまで Mew.org は Apache で運用してきましたが、すでに Mighttpd に置き換えています。
要約:素数判定に使われるミラーラビン法を解説しながら、Haskell で実装してみる。 フェルマーテスト 大きな数を確実に素数だと判定するには、大変時間がかかるので、実用的には「ほぼ素数だ」と確率的に判定する。確率的な素数判定の代表格がフェルマーテ…
IIJ 社内でやったチュートリアル 純粋関数型言語Haskellの紹介 〜制約プログラミングのススメ〜 の資料を公開しました。
正規表現を超えるの補足として、CSVファイルを例に挙げて考えてみる。CSVファイルの定義は、RFC4180にある。 file = record *(CRLF record) [CRLF] record = field *(COMMA field) field = (escaped / non-escaped) escaped = DQUOTE *(TEXTDATA / COMMA / C…
Parsec には以下のようなコンビネーターが存在する。 many p -- p を 0 回以上 many1 p -- p を 1 回以上 count n p -- p を n 回 しかし、正規表現の"{min,max}"のような範囲指定はない。そこで実装してみた。 import ApplicativeParsec range :: Int -> In…