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

h2load を使おう

これはhttp2 Advent Calendar 2015の25日目の記事です。これまで web サーバのスループットを図るには weighttp が定番でしたが、これから h2load を使いましょう。h2load は、nghttp2と一緒に配布されているベンチマークツールです。以下のような特徴があり…

GHC とスペースとリーク

これはHaskellスペースリーク Advent Calendar 2015の17日目の記事です。 :sprint と MonomorphismRestriction サンクのリークを防ぐには、どの式がサンクかを理解する必要がある。そのために便利なのが、GHCiの:sprint コマンドだ。MonomorphismRestriction…

スレッドリーク

これはHaskellスペースリーク Advent Calendar 2015の14日目の記事です。スレッドリークとは一般的に、終了させることを忘れたスレッドが残り続けることを言う。これは終了させ忘れたのが悪いという他ない。一方で、GHC では、スレッドを終了させたにもかか…

にせ末尾再帰

これはHaskellスペースリーク Advent Calendar 2015の8日目の記事です。IOのコードは、普通に書けば末尾呼び出しの最適化が効く形になる。たとえば、こんな感じ: foo :: Char -> String -> IO Int foo a b = do c <- bar a b zoo b c woo c woo :: Int -> I…

[Haskell]僕が人生で起こした唯一のスペースリーク

これは、Haskellスペースリーク Advent Calendar 2015の7日目の記事です。僕は Haskell で主に IO なコードを書いているからか、あまりスペースリークを起こしたことがない。これまで起こした唯一のスペースリークは、サーバプログラムの中の以下のようなコ…

Strict Haskell

次のバージョンである GHC 8.0 では、正格評価用のプラグマして Strict と StrictData が提供されます。環境を作ってみたので、少し試しました。以下のファイルを用意します。 {-# LANGUAGE DeriveFunctor #-} module A where data List a = Nil | Cons a (L…

Haskell の Monad とは言語内DSLのフレームワークである

この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の…