Free モナドは有効?ここ数日 Free モナドについて調べていて気になったことがあるので書く。Free モナド。興味深い名前のこのモナドはいくつかの興味深い特徴を持つ。現時点で自分が知っているのは次の3点。データ型 f を Functor のインスタンスにすると Free f が Monad のインスタンスになるFree f は mtl の型クラスをはじめとする多数の型クラスのインスタンスになる (地道にインスタンスを定義するのはめんどい)Free モナドのアクション Free f a は任意のモナド m のアクション m a に変換できるFree モナドを実用する観点でこれらの特徴を見ると、3点目の Free モナドを任意のモナドに変換できる特徴に注目したい。これは、Free モナドの各アクションをインターフェースと見立ててプログラミングをすると、インターフェースの実装コードをそのプ