タグ

monadに関するpeketaminのブックマーク (3)

  • Goとerror monads - moriyoshiの日記

    GoCon 2013 autumnの後、yuroyoroなどとと飲んでいて 「Goのエラーを戻り値で引き回すのがどうも冗長」 「Haskellのエラーモナドみたいな何かがあればいいのに」 「型パラメータがサポートされればそういうのが書きやすくなるのに」 という話をしていて、クロージャーで関数呼び出しを囲えば今の言語仕様でもいいんじゃないかなと思ってその場で書いてみたものの話。 monad というのがインターフェイスになっていて、次のメソッドを定義している。 Do(what func () (interface {}, error)) monad 戻り値であるmonadに対して次にDoもしくはEndが呼ばれたときに呼ぶべき関数を受け取り、その関数への参照を保持するmonadを生成して返す DoIt() (interface{], error) monadの保持している参照先の関数を呼ぶ。内部

    Goとerror monads - moriyoshiの日記
  • Extensible Effects はモナド変換子に対する救世主になり得るか?

    Extensible Effects はモナド変換子に対する救世主になり得るか? konn-san.com Oleg, Sabry and Swords らによる Extensible Effects: An Alternative to Monad Transformers の論文を読んだメモ的な何かです。モナド変換子に関する簡単な現状確認から入ってはいますが、想定読者層は日常的にモナドやモナド変換子を用いたプログラムを書いている人達です。 どちらかというと自分向けのメモの性格が強いので、詳しい部分は論文を参照してみてください。 背景:モナド変換子とその問題 Haskell を中心に、関数型言語では副作用のある函数を合成するための手段としてモナドが広く用いられている。モナドは非常に強力な抽象化で、およそ副作用と呼べるものはモナドを使って定式化することが出来た。例えば、大域的な環境 r を

    Extensible Effects はモナド変換子に対する救世主になり得るか?
  • ベックの法則と複合モナド - 檜山正幸のキマイラ飼育記 (はてなBlog)

    連休で疲れて、いまいち気力に欠けるんですけど … けど、モナドの話をします。2つのモナドを複合(合成)する、という話題。ある程度モナドに慣れている人向けかもしれない。 (F, μ, η), (F', μ', η') が同じ圏上の2つのモナド(μ, μ'はモナド乗法、η, η'はモナド単位)であるとき、関手としての結合F;F'(反図式順で書くならF'・F)が再びモナドになるかどうか?つまり、F;F'とうまく適合する乗法と単位を定義できるかどうか? これについては、1960年代にベック(Jon Beck)が詳しく調べていて、事情がハッキリとわかっています*1。 で、実際に“複合モナドを構成可能な2つのモナド”の具体例を出します。この実例に対してベックの法則*2や、複合の方法を紹介します。しかし、複合がうまくいく内的なメカニズムまで説明できそうにありません。グチャグチャした複雑な等式を天下りに出

    ベックの法則と複合モナド - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1