本当は、 Freeモナドを超えた!?operationalモナドを使ってみよう http://fumieval.hatenablog.com/entry/2013/05/09/223604 に影響されて、Operationalモナドの話をまとめようと思ったのですが、ちょっと時間なさそうだったので、今日はちょっとCoYonedaの話をしましょう。 上記ブログでは、CoYonedaについて「ただのデータ型からFunctorを生み出せる」と紹介されています、これがいったいどういう事か、ちょっと深く追ってみましょう。 初めに 今回は、任意の型をFunctorにする事が目標なので、まず簡単に以下のような型を定義しておきます。 data Hoge a = Foo a | Bar a deriving Show 米田先生とYoneda Yonedaというのは米田信夫という日本の数学者の名に因んだ「米田の