タグ

monadに関するchuwbのブックマーク (16)

  • All About Monads モナドのすべて

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

    chuwb
    chuwb 2015/09/28
  • Functors, Applicatives, And Monads In Pictures - adit.io

    Written April 17, 2013 updated: May 20, 2013 Here's a simple value: And we know how to apply a function to this value: Simple enough. Lets extend this by saying that any value can be in a context. For now you can think of a context as a box that you can put a value in: Now when you apply a function to this value, you'll get different results depending on the context. This is the idea that Functors

    chuwb
    chuwb 2013/04/20
  • Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); }

    最近Haskellerの間でFreeモナドが熱いです。 Haskellで悟りを開いた人がFreeモナドで再び悟りを開いたりして、なんかよく解らないけど凄いことになっている今日このごろですが、すっかり乗り遅れていました。どうも、貴女のちゅーんです。 で、皆こぞって「すごいすごい」と言っているFreeモナドなので、流石にいつもまでも全然知らないのはマズイんじゃないかなぁとか思って、重い腰を持ち上げ調べながらこの記事を書き始めたワケですよ。はい。*1 けっこう急ぎで勉強して書き上げたので随所に間違いあるかもです。ツッコミお待ちしてます。 さて、この「Freeモナド」について、オレオレ定義で簡単に言葉にすると。「Functorと組み合わせて様々な挙動を実現できるモナド」です。 大抵「Monadのインスタンス」というと、MaybeにしてもIOにしても、わりと具体的な事象を扱ってますが、このFreeモ

    Freeモナドって何なのさっ!? - capriccioso String Creating(Object something){ return My.Expression(something); }
    chuwb
    chuwb 2013/02/20
  • Comprehending Monads

    What's a monad? What's a monad? trait Monad[A] { def map[B](f: A => B): Monad[B] def flatMap[B](f: A => Monad[B]): Monad[B] } Note: there is no single, special Monad base trait! Provides a standard interface for composing and sequencing operations on some contained value(s) map: Applies a "regular" function to the contained value(s) flatMap: Applies a "monadic" function to the contained value(s) T

    chuwb
    chuwb 2013/01/18
  • http://mew.org/~kazu/material/2011-monad.pdf

    chuwb
    chuwb 2012/08/03
  • 「JavaScriptでの非同期関数合成」を継続モナドで - terazzoの日記

    お題: 複数個の関数があって、関数を呼び出した結果を使って関数を呼び出して…っていうのを1個の関数にします。 JavaScriptでの非同期関数合成 - monjudoh’s diary 関数の形を見てみます。 // 1を足す function add1(callback,arg){ callback(arg+1); } コールバック関数を渡して、戻り値ではなくコールバック関数を呼び出してもらう事で結果を取得する……これって「CPS(継続渡し形式)」!CPSなら分かるわ!(当か?) 参考にしたサイト: http://www.h4.dion.ne.jp/~unkai/js/js12.html http://practical-scheme.net/docs/cont-j.html JSDeferredで考えるモナド - JavaScriptで遊ぶよ - g:javascript Haske

    「JavaScriptでの非同期関数合成」を継続モナドで - terazzoの日記
    chuwb
    chuwb 2012/07/29
  • The Typeclassopediaを訳しました, The Typeclassopedia - #3(2009-10-20)

    ■ [Haskell] The Typeclassopediaを訳しました The Monad.ReaderのIssue 13に掲載されたThe Typeclassopediaという記事が、Functor, Monad, Monoid, Applicative, Foldable, Traversable, Arrowといったような型クラスについて良くまとまっていて、そのあたりを知りたい時の取っ掛かりになりそうだったので翻訳してみました。 作者のBrent Yorgeyさんからも許可がいただけたので公開します。翻訳に慣れていないので変な日語(特に専門用語の日語訳はかなり怪しい)があったり、そもそも間違っていたりするかもしれませんので、何か見つけたらコメントを頂けると助かります。 ■ [Haskell] The Typeclassopedia by Brent Yorgey <first

  • Applicative よりも Monad の方が力が強い理由 - あどけない話

    Applicative よりも Monad の方が力が強い理由を考えるためのメモ。これから議論するためのたたき台なので、そう思って読んで欲しい。 コンテナで包む return Monad とは、コンテナである。コンテナは、文脈を表す。たとえば、Maybe というコンテナは、失敗するかもしれない計算という文脈を表す。 通常の値や関数を文脈に入れるための API が return である。 return :: a -> ma コンテナ内での関数適用 <*> 以下のような型を持つ関数を考える。 f :: a -> b この関数を return を使って文脈の中に入れてやると、型は次のようになる。 return f :: m (a -> b) この関数を、コンテナ内にある値に適応するための API が (<*>) である。 (<*>) :: m (a -> b) -> m a -> m b コンテ

    Applicative よりも Monad の方が力が強い理由 - あどけない話
  • QAで学ぶMonad - あどけない話

    この記事は、Monad でつまづいた Haskeller のための Monad 再入門です。 Monadとは何ですか? Monad とは、単なる型クラスの一つです。難しいという風評もありますが、それ以上でもそれ以下でもありません。 この型クラスのメソッドは、return と >>= です。 class Monad m where (>>=) :: m a -> (a -> m b) -> m b return :: a -> m a つまり、以下を満たす型の集合が Monad です。 m a で表現できるように一つの型変数を格納するコンテナ型 >>= と return を実装 return は新しいコンテナを作り、>>= は二つのコンテナを合成します。 Monad のインスタンスは失敗系と状態系に大別できます。以下に代表的なインスタンスを示します。 失敗系: Maybe、[] (リスト)

    QAで学ぶMonad - あどけない話
  • 檜山正幸のキマイラ飼育記 - 圏論やモナドが、どうして文書処理やXMLと関係するのですか?

    …という類<たぐい>の質問に答えるのはちょっと面倒なんですけど、とりあえず1つだけ具体例を挙げておきましょう。テンプレート処理が、もろにモナドになっている、ってハナシ。今回はテキスト処理について説明。次回(いつになるかまったく不明)はXML処理の予定。 テキスト処理だけでも長ーい説明(最長記録かも)なのだけど、分割すると“勢い”がなくなるから一挙掲載。読むときはユックリ・ジックリ読んでくださいね。プログラミング課題も、実際にコーディングしないまでも、「こうやればいいな」という方針くらいは考えてください。 ※印刷のときはサイドバーが消えます。 内容: ネストしたテキスト テンプレート処理 ブロック、文字列、名前 フラット・テキストとテンプレート・テキスト 多段階のテンプレート処理 蛇足 素材を整理しよう モナドに向かって突っ走れ!! バッチリ、モナドだぜぇ 残りは脱兎のごとく 最後に言ってお

    檜山正幸のキマイラ飼育記 - 圏論やモナドが、どうして文書処理やXMLと関係するのですか?
    chuwb
    chuwb 2011/12/08
  • 「モナドは象だ(Monads are Elephants)」日本語訳 — Japanese Translation of Monads are Elephants v1.0 documentation

    「モナドは象だ(Monads are Elephants)」日語訳¶ この文章は、以下の記事の翻訳です。 Monads are Elephants: http://james-iry.blogspot.com/2007/09/monads-are-elephants-part-1.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-2.html http://james-iry.blogspot.com/2007/10/monads-are-elephants-part-3.html http://james-iry.blogspot.com/2007/11/monads-are-elephants-part-4.html JAMES IRY:ONE DIV ZERO: http://james-iry

  • モナドはメタファーではない · eed3si9n

    2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した

  • 「モナドは象だ」の翻訳まとめ - Fight the Future

    とてもエントリが多くの回にわたったので、まとめます。 One Div Zero: Monads are Elephants Part 1 モナドについて調べていく(7) - Fight the Future じゅくのblog モナドについて調べていく(8) - Fight the Future じゅくのblog モナドについて調べていく(9) - Fight the Future じゅくのblog モナドについて調べていく(10) - Fight the Future じゅくのblog モナドについて調べていく(11) - Fight the Future じゅくのblog モナドについて調べていく(12) - Fight the Future じゅくのblog One Div Zero: Monads are Elephants Part 2 モナドについて調べていく(14) - Fig

    「モナドは象だ」の翻訳まとめ - Fight the Future
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

    はてなグループの終了日を2020年1月31日(金)に決定しました 以下のエントリの通り、今年末を目処にはてなグループを終了予定である旨をお知らせしておりました。 2019年末を目処に、はてなグループの提供を終了する予定です - はてなグループ日記 このたび、正式に終了日を決定いたしましたので、以下の通りご確認ください。 終了日: 2020年1月31日(金) エクスポート希望申請期限:2020年1月31日(金) 終了日以降は、はてなグループの閲覧および投稿は行えません。日記のエクスポートが必要な方は以下の記事にしたがって手続きをしてください。 はてなグループに投稿された日記データのエクスポートについて - はてなグループ日記 ご利用のみなさまにはご迷惑をおかけいたしますが、どうぞよろしくお願いいたします。 2020-06-25 追記 はてなグループ日記のエクスポートデータは2020年2月28

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • Monads are Elephants Part 1

    Introductions to monads are bit of cottage industry on the Internet. So I figured, "why buck tradition?" But this article will present Scala's way of dealing with monads. An ancient parable goes that several blind men were experiencing their first elephant. "It's a tree," one said while wrapping his arms around its legs. "A large snake," another said while holding its trunk. A third said...um, som

    chuwb
    chuwb 2010/12/15
    モナドは象……だと……
  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

    モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基

  • 1