タグ

ブックマーク / hiratara.hatenadiary.jp (2)

  • 自由モナドの定義であるところの Control.Monad.Free.Church.foldF - Pixel Pedals of Tomakomai

    圏論勉強会の資料 によれば、 と自由な構成 について、 を与えると が得られるとある。 自由モナドの文脈でこれを考えると、関手 からモナド (の構造を忘れて関手と思ったもの)への自然変換を定義すれば、自由モナド からモナド への自然変換(正確にはモナドモーフィズム)が得られるという意味となる。 free パッケージにこの対応関係に相当するものは入ってないのかなと探してみたら、 Control.Monad.Free.Church というモジュールで定義されていた。 foldF :: Monad m => (forall x. f x -> m x) -> F f a -> m a The very definition of a free monad is that given a natural transformation you get a monad homomorphism. ht

    自由モナドの定義であるところの Control.Monad.Free.Church.foldF - Pixel Pedals of Tomakomai
  • MonoidもMonadもモノイドだって話 - Pixel Pedals of Tomakomai

    わかめのモナド浸しと第6回 スタートHaskell2で「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」という話をしてきた。スライドは以下。 モナモナ言うモナド入門 *1 モナモナ言うモナド入門.tar.gz .tar.gz の方はHaskellでの説明だったので、検証用コードも書いてみてgistに上げてる。QuickCheckとか使わずに値一個与えてみてるだけだけど、型が通ることくらいは確認できるかと。以下、検証用コードについて解説する。 MonoidはHaskの圏のモノイド まず、Monoidの方。図式はスライドを見てもらうとして、ソースは以下。満たすべきは各図式の時計回りと半時計回りが等しいことであり、具体的には、モノイドであれば clockwiseX == anticlockwiseX である必要があるという意味である。 assoc :: ((a, b), c)

    MonoidもMonadもモノイドだって話 - Pixel Pedals of Tomakomai
  • 1