あどけない話

Internet technologies

2010-01-01から1年間の記事一覧

Haskell で Y コンビネータ

Haskell では、Y コンビネータが作れないと誤解している人がいるので、できることを示すと同時に、これまで学んだことをまとめてみます。 遅延評価を活かした Y コンビネータ 関数名を用いた再帰を使ってよいなら、Haskell では遅延評価のおかげで、Y コンビ…

「プログラミングHaskell」の増刷

おかげさまで「プログラミングHaskell」の増刷が決まりました。第1版第1刷の誤植表に載っていない間違いを発見した人は、今すぐ報告していただけると助かります。間に合えば、第2刷に反映したいと思います。プログラミングHaskell作者: Graham Hutton,山本和…

Parsec2と3

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

Snow Leopard で Emacs 22.3 がコンパイルできなかったので、コンパイルできるようにしたソースを、Gitoriusで公開しました。Macports のパッチとか、inline パッチとか、Goby の View モードでウインドウタイトルが消えるハックとかが入っています。詳しく…

STM で解くサンタ問題

Haskellers Meeting 2010 Springで、Simon さんに STM(Software Transaction Memory)の話をして頂くようにお願いしました。参加者の人があらかじめ予習できるように、参考書として Real World Haskell とビューティフルコードを挙げておきました。Real World…

Haskellers Meeting 2010 Spring (in Tokyo)

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…

Haskellers Meeting 2010 Spring

4月16日に、Haskell 界の大御所 Simon Peyton-Jones さんが東京にやってきます!彼のお話を聞きたい人は、今すぐ ATND で参加表明して下さい。

いろいろソースを公開しました

重い腰を上げて、3つのソースを公開しました。 Piki Pikiのソースを github で公開し、Pikiバージョン0.3.0をHackageに登録しました。バージョン0.2からの機能追加はありません。Cabal に対応したことと、Applicative スタイルに直せるところは直したことが…

Haskell で書いた HTTP サーバー

Haskell で書いた HTTP サーバー Mighttpdをリリースしました。Mighty (マイティー)と読みます。興味のある人は、遊んでみて下さい。これまで Mew.org は Apache で運用してきましたが、すでに Mighttpd に置き換えています。

素数判定

要約:素数判定に使われるミラーラビン法を解説しながら、Haskell で実装してみる。 フェルマーテスト 大きな数を確実に素数だと判定するには、大変時間がかかるので、実用的には「ほぼ素数だ」と確率的に判定する。確率的な素数判定の代表格がフェルマーテ…

制約プログラミングのススメ

IIJ 社内でやったチュートリアル 純粋関数型言語Haskellの紹介 〜制約プログラミングのススメ〜 の資料を公開しました。

正規表現を超える--CSVファイル編

正規表現を超えるの補足として、CSVファイルを例に挙げて考えてみる。CSVファイルの定義は、RFC4180にある。 file = record *(CRLF record) [CRLF] record = field *(COMMA field) field = (escaped / non-escaped) escaped = DQUOTE *(TEXTDATA / COMMA / C…

Parsecで範囲指定

Parsec には以下のようなコンビネーターが存在する。 many p -- p を 0 回以上 many1 p -- p を 1 回以上 count n p -- p を n 回 しかし、正規表現の"{min,max}"のような範囲指定はない。そこで実装してみた。 import ApplicativeParsec range :: Int -> In…