タグ

monadに関するsomemoのブックマーク (25)

  • モナド教

    前提知識:モナド モナドを理解せずともモナド教を信ずることは出来ますが,理解していればより深く納得できるでしょう. 操作 :: 型 -> 型 は,"型"から"型"へ写す"操作"の存在を表します. モナドの文脈 m が必要とする2つの操作: return :: a -> m a で,値を保ちつつ文脈 m の中に入れ込むことが出来ます. (=<<) :: (a -> m b) -> (m a -> m b) で,「値を文脈に入った別の値へ写す操作」を「文脈に入った値を同じ文脈に入った別の値へ写す操作」に変換します. id :: a -> a は値をそのまま返す操作です. id を =<< で変換して得られる操作 join :: m (m a) -> m a で,二重に文脈に入った値を一重の文脈に入った値に戻すことが出来ます. 文脈の値から生の値を取り出す型 m a -> a を持つ操作は,一般

    somemo
    somemo 2014/08/19
  • matarillo.com: モナド - みんな大好き、モナドに関する記事の一覧

    2018-06-30 11:07:18 みんな大好き、モナドに関する記事の一覧 Fabulous Adventures In Coding 元MSのC#コンパイラーチームの主任デベロッパー、その後コベリティを経て現在はFacebookにいるEric Lippertのブログで連載されていたモナドの解説記事の翻訳。 パート1 モナド・パターンは型に関するパターンである。 パート2 モナド的な型についていくつか実例を紹介し、共通点を知る。 パート3 モナド的な型に対してある演算を行い、ルールを2つ見出す。 パート4 2つ目のルールを一般化できないか試す。 パート5 一般化した2つ目のルールをさらに変更し、当のルールを得る。 パート6 2つのルールにいくつかの制約を追加する。 パート7 最後の制約を説明し、制約のことをモナド則と呼ぶ。 パート8 モナド生成処理と関数適用処理の伝統的な名前を紹介。

    somemo
    somemo 2014/02/12
  • モナドの講義をYoutubeで | wrong, rogue and log

    yutakashinoの日々と意見 - ご注意:blogのyutakashino(柏野雄太)による書き込みは、その属する法人等の見解を何ら代表するものでなく、個人のテンポラリな意見の表明に過ぎません。 by yutakashino

    モナドの講義をYoutubeで | wrong, rogue and log
  • JSDeferredを読む - 西尾泰和のはてなダイアリー

    前からamachangが「読むといい」って言っていたJSDeferredのコードを読む。defferedじゃなくてdeferredなので注意。 Deferred.define = function (obj, list) { if (!list) list = ["parallel", "wait", "next", "call", "loop"]; if (!obj) obj = (function () { return this })(); for (var i = 0; i < list.length; i++) { var n = list[i]; obj[n] = Deferred[n]; } return Deferred; }; これはグローバルスコープに書き出すコード。(function () { return this })()でwindowオブジェクトがとれているみた

    JSDeferredを読む - 西尾泰和のはてなダイアリー
  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

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

  • 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

  • GitHub - dsrkoc/monadologie: Monad Comprehensions in Groovy

  • モナドについて考えた記録 - 素人がプログラミングを勉強していたブログ

    Promiseってなんとなくモナドっぽいなと思って、ジェネレータ使ってHaskellのdoを再現できないかなあというのがはじまり。結論からいうと、できない。 そもそもPromiseがモナドであるかを考える。 return :: Monad m => a -> m a 値を受け取ってfulfilledされたPromiseを返すものだ Promise.fulfill / Promise.resolveがこれにあたる。 Promise.mreturn = Promise.fulfill || Promise.resolve; >>= :: Monad m => m a -> (a -> m b) -> m b bindとも呼ばれたりする。この関数に、値を受け取ってモナドを返す関数を渡すと、その値が結果になる。 Promise.prototype.mbind = Promise.prototype

    モナドについて考えた記録 - 素人がプログラミングを勉強していたブログ
  • HaskellのMonadは何をしているか - Just $ A sandbox

    はじめに:モナドが何かわからないけど分かりたい人へ この記事はあなたの為に書かれたものです! 「モナドって難しいそうだしよく分からない、けどきっと賢い人たちが『モナドとは何か』について素敵な説明を与えてくれるはず!」 …そういう期待を持っているまさにあなたのその勘違いを是正するためにこの記事はあります。 「モナドが何か」を理解するのはまずは諦めて下さい。 この記事は、世界一わかりやすいモナドの記事 - みょんさんの。を理解したいと思わない人のために、プログラミングの文脈でモナドに関する少しの考え方を提供するものだと考えて下さい*1。 what it is から how it works へ モナドはモノではありません。だから「何」という質問に答えるのは難しいでしょう。数学的な公理を読者に投げつけることも意味不明な喩えでごまかすこともしたくはないので、少しだけ違う説明をします。 例を挙げまし

  • モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア

    はじめに 過去に私がHaskellを学び始めた時、 真っ先に疑問に思ったことはモナドの存在だった。 当時は全くと言っていいほど理解できなかったが、 最近Haskellを学び直して ようやく理解することができた(と思う)。 という訳で、現時点での私のモナドへの理解を示すためにこの記事を書く。 ここではモナドの質が何なのか概要を示す。 正確な説明は数多あるモナドについてのチュートリアルを参照されたい。 Hellow World問題: IO, Monad, fail 新しい言語を学ぶ時、まず間違いなくHello Worldを書くだろう。 HaskellでHello Worldを書くとこうなる: この1行だけを見ると普通の命令型言語と大して変わらないように思える。 ところでHaskellには強力な型推論がある。 そのため型宣言を省略しても処理系がよしなに解釈してくれる。 ただ普通はコードの意図す

    モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア
  • Monads

    Monads All the code for this post are available here.https://github.com/santoshrajan/monadjs Consider the map functor from the last chapter. We could use map to iterate over two arrays adding each element of the first to the second. var result = [1, 2].map(function(i) { return [3, 4].map(function(j) { return i + j }) }) console.log(result) ==>> [ [ 4, 5 ], [ 5, 6 ] ] The type signature of the inne

  • Operational Monad

    Mitsutoshi Aoe/maoe @ma0e freeモナドとsymanticsは目的が違うので直接比較するものじゃないと思うのだけど違うのかな。例えばASTとインタプリタとプリティプリンタを作る場合、ASTのデータの構築というか接ぎ木を簡単にmonadicなAPIにできますよというのがfreeモナドで Mitsutoshi Aoe/maoe @ma0e symanticsの方はタグがいらないとかGADTみたいなリッチな型がなくてもいいとかexpression problemを解決できるよとかそういう話だと思う。

    Operational Monad
    somemo
    somemo 2013/06/30
  • モナモナ言うモナド入門

    Putter King Education Program - Math Level 2 (Teacher's Guide Japanese)Kevin Dias

    モナモナ言うモナド入門
  • モナドとはモナドである - モナドとわたしとコモナド

    この記事を読む前に、絶対に理解出来ないモナドチュートリアルに一度目を通してみてほしい。モナドを理解していく上で、とても重要なことが書かれている。 改めて言おう、モナドはモナドだ。コンテナだとかプログラマブルセミコロンだという説明では、モナドのすべてを正確に表せるとは言い難い。では、モナドを過不足なく説明できる、モナド以外の言葉はあるのか? 実は、モナドを表現し、かつモナドで表現される言葉は存在する。その一つは手続きである。手続き型言語の「手続き」だ。 手続きとは何か 手続きは結果を持つ おおよそすべての手続きは何らかの結果を持つ。Haskellの()、C言語のvoid、PythonのNone、Rubyのnilなども結果の一種だ。結果が出ないとしたら、そのプログラムは停止しないか、途中で異常終了するだろう。 手続きには最小単位が存在する 処理系が扱っている以上、手続きが際限なく分解できるとい

    モナドとはモナドである - モナドとわたしとコモナド
  • こもなど!コモナド!Comonad!! - capriccioso String Creating(Object something){ return My.Expression(something); }

    どうも。 清く正しいHaskell戦士ちゅーんさんです。 今日はアレです。 Comonad やってきます。 えー・・・ 「こ」 「コ」 「Co」 Coってなんすか。カレーハウスっすか。丸い響きの音を付けて可愛く見せれば良いと思ってるんですか。 いやいや、騙されませんよ、後ろのmonadから察するにどう考えても圏論用語です。当に(ry という感じで、名前からして怪しげな臭いをプンプンと漂わせているComonadを見てみたいと思います。 とりあえず、お約束なので、Hackageに行ってComonadクラスの定義を見てきましょう。 http://hackage.haskell.org/packages/archive/comonad/0.1.1/doc/html/Control-Comonad.html class Functor w => Comonad w where extract ::

    こもなど!コモナド!Comonad!! - capriccioso String Creating(Object something){ return My.Expression(something); }
  • Three Useful Monads - adit.io

    Written June 10, 2013 Note: before reading this, you should know what a monad is. Read this post if you don't! Here's a function half: And we can apply it a couple of times:

  • モナドの六つの系統[Functor x Functor] - モナドとわたしとコモナド

    モナドは「アクション」を表す抽象的な構造である。モナドは、Haskellにさまざまな概念に対する記述能力をもたらす。 モナドの基礎 return :: a -> m a: 純粋な値をモナドで包む。 m >>= f :: m a -> (a -> m b) -> m b: モナドmに包まれた値をfに渡し、その結果として現れたモナドを結合する。 固有アクション: それぞれのモナドに固有の方法でモナドを生み出す。 実行: モナドに包まれた値を、より根源的な形に還元する。 モナド則 モナドに以下の三つの制約を課すことによって、最低限度の記述能力を保証している。 return a >>= k == k a m >>= return == m m >>= (\x -> k x >>= h) == (m >>= k) >>= h より強い制約は、より強い力を生み出す。 モナドの分類 モナドは、以下の6つ

    モナドの六つの系統[Functor x Functor] - モナドとわたしとコモナド
  • はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知

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

    はてなグループの終了日を2020年1月31日(金)に決定しました - はてなの告知
  • 単なる自己関手の圏における... (1) 圏とは | tnomuraのブログ

    Haskell のIOモナドの分かりにくさに対する批判に対し、フィリップ・ワドラーが、「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」と答えたそうだ。これで、すんなり納得するのはよほど圏論に詳しい人だろう。 管理人としては、圏論抜きで Haskell というプログラム言語を使えればそれが一番ありがたいのだ。しかし、最低でもモナドや圏論やモノイド対象が何を指しているのかくらいは知っておきたい。そこで、『モナドへの近道・Haskell からの寄り道』(中村翔吾著)というレポートを道案内にして、少なくともモナドというのが何を指しているのかを探索してみた。 まず、圏論の「圏」という言葉が何を指しているかだ。端的に言うと圏とは、対象と射からなる構造だ。集合と写像なら少しは馴染みがあるので、集合に例えると、対象とは集合のことで、射とは写像のことだ。集合 a と集合 b があり、そ

    単なる自己関手の圏における... (1) 圏とは | tnomuraのブログ
  • 圏論でアハ体験 - Bug Catharsis

    もう1週間以上前になりますが、Code2012という合宿イベントに参加してきました。いろいろな方との交流あり、温泉あり、クラウディアさんありと大変楽しかったので、ぜひ来年も参加したいです。 で、VBerのくせにそちらで「5分じゃわからないモナド - 圏論なんて華麗にスルー」というタイトルでLTをしてきました。なぜか、宴会の後にLTをやるという謎なタイムスケジュールとなっていたため、十分にアルコールが回った状態でお話をしました。時間通りにジャスト5分で話しきれたのは奇跡です。来年はそのあたり考慮してもらいたいかも...しれません。LTの後にいくつか質問をいただいて、モナドや圏やF#についてなんだか結構な時間追加でしゃべったような気がします。 LTの要点としましては、「モナドを使うのに圏論の知識は必要ない。」という意見はまったくそのとおりなのだけど、だからといって関数型言語を学ぶ人が圏論に触れ

    圏論でアハ体験 - Bug Catharsis