Skip to content

Instantly share code, notes, and snippets.

@pocketberserker
Created June 23, 2014 08:50
Show Gist options
  • Select an option

  • Save pocketberserker/35f5a572bcea51a9b7cd to your computer and use it in GitHub Desktop.

Select an option

Save pocketberserker/35f5a572bcea51a9b7cd to your computer and use it in GitHub Desktop.
@zakky_dev さん歓迎会に使う資料

Free Monad解説(未完)

発表場所:@zakky_dev さん関数型帝国名古屋入国歓迎会 @ 名古屋ギークバー
資料のライセンス:CC-BY-SA 4.0

自己紹介

https://dl.dropboxusercontent.com/u/57478758/pbsk.jpg

  • なかやん・ゆーき / ぺんぎん / もみあげ
  • @pocketberserker / id:pocketberserker
  • どこにでもいるふつーの社会人
  • Microsoft MVP for F# (2013/04 ~ 2015/03)
  • F# / Scala(z) / Haskell / Erlang / C++ に興味あり

釈明

https://twitter.com/kyon_mm/status/477002304239853569

  • TL眺めてたらHaskellのつぶやきが多いように見えた
  • ※個人の日記レベルの感想です

発表内容について

きょんさん「なかやん、何話したい?」

おとーふさん「F#でFree Monadで!」

なかやん「ではそれで」

  • そういえばHaskellで一時期Free Monad流行ったよねとか
  • (時代は進んでOperationalらしいですが気にしない)

Free Monad is 何

大雑把にいうと

  • Functorを持つデータ型をMonadにできる

圏論わかりませんorz

HaskellのFree Monad

分解を試みる

  • (<$>) :: Functor f => (a -> b) -> f a -> f b
  • 中身のFreeな値を取り出して再びbind
  • Pureだったらfを適用

あと、インスタンス宣言をFreeに集約できる。

ScalazのFree Monad

スタックあふれを回避するためにGosubが追加されている

JavaでのFree Monad

F#でのFree Monad

コンピュテーション式をFreeのもの一つに統一できるかも、という壮大な計画があるかもしれない…?

C#でFree Monad

主にzakky_devさんへ

  • F#で(ry
  • 一言でF#erといっても、その方針は様々です

きらめく舞台は次のステージへ!

  • Coyonedaという存在
  • Operational Monad
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment