2013-03-01から1ヶ月間の記事一覧

ping

Hakell で ping を作った。Haskell で ping を作ろうと思ってから2年以上も経ってしまった。 コードは Gist にある。 ping を作る中で一番苦労したところは、送信するパケットを作成ところ。String (Char) でどうやってデータを作ればいいのかわからなかった…

ネットワークプログラミング(サーバー編)

そろそろネットワークのプログラムを書いてみようと思ったので、echo サーバを書いてみた。 意外に簡単に書けてしまった。 C しか知らなかった頃は、頑張って scoket, bind, listen ... とかシステムコール呼び出してたけど(あと引数の構造体を作るのが面倒…

go

Haskell のライブラリのソースを見ていると、go というローカル関数名がよく使われているのに気付く。今日はData.Map のソース を読んでいたけれど、go だらけだった。 なぜだろうと思う人は他にもいるようで stackoverflow にそのことに関する質問が投稿さ…

foldlに無限リスト?

無限リストに foldl を適用すると停止しないと言うのを前に書いたが、なぜ停止しないのだろうか。 なぜ停止しないのか foldl の定義はこうなっている。 foldl f z0 xs0 = lgo z0 xs0 where lgo z [] = z lgo z (x:xs) = lgo (f z x) xs f を(&&) とした場合…

foldr をやっと正しく理解した

今まで foldr についていい加減な理解をしていたが、やっと正しく理解できた(気がする)。理解できていなかったのは、無限リストに適用しても停止する(ことがある)のは何故かというところ。 よくある例 Prelude.and を foldr と (&&) を使って作ってみる…

Twitterで認証する方法(Batch)

Twitter のタイムラインを取得して、どうのこうのするバッチを作っている(まだ途中)。Twitter のタイムラインを取得する API は認証が必要。Webサービスやアプリ等は OAuth を使うが、バッチの場合はそうも行かない。バッチなど人が介在しないシステムでは…