タグ

monadに関するmas-higaのブックマーク (7)

  • dry-monadsを使ってRubyでモナドの夢を見る - Qiita

    はじめに 皆さんはRuby、好きですか?僕は好きです。 皆さんはモナド、好きですか?僕は好きです。 好きなものと好きなもの、どっちも使いたくなるのが人間の性。 どうにかしてRubyでモナドを使いたい! ということで、Rubyでモナドを使って、Rubyでよく書くありがちなコードをいい感じにしていきます。 モナドってなに? モナドはHaskellなどの関数型言語で使われる概念です。 細かい定義は他の記事に任せますが、簡単にいってしまうと「書いたコード(文字通り)よりも外の世界から受ける影響に安全にアクセスする方法」です。こういうのをプログラミングでは「副作用」って言ったりします。 モナドについてはこことここの記事が個人的に勉強になりました。 モナドが力を発揮する場面としてよくあげられるのが「IO」です。IOはまさに「自分が書いたコードの外から受ける影響」ですよね。 入力ではコードを実行するまで

    dry-monadsを使ってRubyでモナドの夢を見る - Qiita
    mas-higa
    mas-higa 2019/12/16
    なるほど、わからん!
  • https://qiita.com/lambdalice/items/124199b62d66d7c745a1

  • "圏論とかモナドなんて簡単だからscalaを使って説明してみた"を検証してみた - Pixel Pedals of Tomakomai

    射っていうのはscalaだと単なる関数だし、関手はmap、モナドはflatMapなだけです。これのどこが難しいというのでしょう。 圏論とかモナドなんて簡単だからscalaを使って説明してみた 内容について考えてみよう。 圏の定義? trait Cat { type A type B def f:A => B } trait Cat { type A type B type C def f:A => B def g:B => C def f_g:A => C = f andThen g } 圏論とかモナドなんて簡単だからscalaを使って説明してみた ここで定義されているCatはただの1の射であって圏とは言い難い。hom setを定義したというのならまだわかるが、ScalazのHomとは似ているが違う定義だ。具体的に言うと、Homは1の射fではなく、射を表す型であるCが定義されている。

    "圏論とかモナドなんて簡単だからscalaを使って説明してみた"を検証してみた - Pixel Pedals of Tomakomai
    mas-higa
    mas-higa 2013/04/09
    内容が内容なだけに、ブクマしてる人もそれっぽい人達だわ。
  • 「モナドは象だ(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

  • 第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~

    大手SIベンダにてSEやPMやアーキテクトとして勤務したのち,株式会社豆蔵を経て,現在は合同会社シンプルアーキテクト代表社員であり,株式会社匠Business Placeのチーフコンサルタント。主に超上流のプロセスである要求開発やオブジェクト指向,アジャイル開発のコンサルタントとして活躍中。開発の現場にこだわり,開発の現場を少しでもよくしたいと日夜奮闘している。要求開発アライアンス執行委員。著書に『オブジェクト脳のつくり方』や『eXtreme Programming実践レポート』(ともに翔泳社発行。後者は共著)などがある。 Javaなど,オブジェクト指向や手続き型のプログラミングの経験はあるけれど,関数型のプログラミングは初めてという皆様のための,そして筆者自身のための「関数脳のつくり方」シリーズのSecond Season(First Seasonはこちら)。今回は「モナド」を取り上げま

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
    mas-higa
    mas-higa 2009/10/28
    悟り
  • Route 477 - gemcutterの使い方まとめ (2009年秋)

    ■ [haskell] モナドって結局なんなの 社内勉強会でモナドについて発表しました。分かった気がするたびにすぐに手からすりぬけてしまう、それがモナド…! 追記: モナドそのものが何なのかとか考えないほうがいいんじゃないですかね! [Twitter / いーぐるとまとより引用] まさにその通りだと思います(笑)。IOの使い方、Maybeの使い方、Stateの使い方などを押さえておけば、 中がどうなってるかなんて知らなくても大丈夫。 でも、モナドの持つ「なんか秘技がありそうな感じ」が、中を覗いてみたくさせるんですよね。 この、どこまで掘っても自分の知らないことが出てくる感じがHaskellの魅力なのかも。 Haskell の当にすごいところは、「なぜなに」を問いかけることでいつまでもプログラマが成長できるところにある。 [ふぁぼったー / ikegami__より引用] 一問一答 Q. モ

    Route 477 - gemcutterの使い方まとめ (2009年秋)
  • State モナドと疑似乱数 - あどけない話

    State モナドの利用例として疑似乱数が挙げられることがあります。たとえば、以下のように。 モナドのすべて Haskell/Understanding monads でも、State モナドの例として、疑似乱数は適切ではないと分りました。 疑似乱数は、単なる数列ですから、リストとして生成し、欲しい分だけ先頭から使えばいいんですね。Haskell は遅延評価なんですから。 rand x = (x * 7 + 5) `mod` 17 randList = iterate rand 8 take 20 randList → [8,10,7,3,9,0,5,6,13,11,14,1,12,4,16,15,8,10,7,3] まだまだ頭が命令型だと思う今日この頃。。。

    State モナドと疑似乱数 - あどけない話
  • 1