Twitterのどこかで「Contモナドを使わない継続の説明を書いてくれ」みたいな話を目にしたので書きました. この記事は,以下のような方を対象に書かれています. Haskellはなんとなく使える.モナドもなんとなくわかる. 息をするように新しいモナドを定義したりはできない. 継続が何かは全く分からない.Schemeとかを使ったこともない. 継続とは Haskell(に限らずほとんどの言語)では,以下のようなステップでプログラムを実行していきます. 何らかの関数に引数を与えて,その計算結果を受け取る. 受け取った計算結果を別な関数の引数に与える. 以下繰り返し. 例えばHaskellで,与えられた3つの数の平均を取る関数を(非常に冗長に)書いてみると,以下のようになるでしょう. module Cont where import Prelude hiding (div) add :: Num