タグ

モナドに関するn314のブックマーク (7)

  • 30分でわかるJavaScriptプログラマのためのモナド入門

    「30分でわかる」のは、だいたい、 4. モナド(Monad)とは何か? の読了までを想定しています。 また速い人なら、30分で全部一気に読み通せる分量でもあると思います。 30分以上かかっても一気読みしてしまうことが推奨されますし、一気読みできるように、前に戻って知識の再確認をしなくて済むように、最大限留意して構成を設計した上で執筆されています。 数学と用語問題。モナドの理論的基盤として圏論があるのは事実。理論的基盤がしっかりしているのはプログラミングという数学的作業において歓迎すべきことではある一方で、他方そのため一般的なプログラマにとってはまず用語に馴染みがない。歴史的に、圏論ベースのモナドを理論から関数型プログラミングに応用されていく過程では、実際、先駆者の間でさえ紆余曲折があったのだが、学習者へは馴染みのない用語を伴って、いきなり高度な数学的概念全開で天下り的に提示されてしまうこ

    n314
    n314 2019/03/26
    具体的な使い道が思い浮かばないところが難しいんだよなあ。何も無いところからPromiseを自分で作るレベルだと役立ちそうだが、特に例が思い付かない。
  • bindはfmapとjoinに分解できる - Qiita

    数日前に頭の中で考えてた駄文。 モナドによって性質が大きく違うことからモナドは掴みにくいものだってのはよく言われることだけど、それは各モナドのbindの特色がfmapに入っているかjoinに入っているかにも関連するのかなと思った。 例えば、ListやMaybeだと、joinは皮を剥ぐだけで面白いことは何もしてなくて、fmapにその特色が入っている。 instance Functor [] where fmap = map map :: (a -> b) -> [a] -> [b] map _ [] = [] map f (x:xs) = f x : map f xs 逆にStateやIOモナドのfmapは値を普通に関数適用するだけで背後にある状態はまったく触らない。面白いことをやっているのはjoinの方で、状態の変更を外側,内側、と順番に逐次処理する役割を担っている。 join :: (M

    bindはfmapとjoinに分解できる - Qiita
  • 絶対に理解出来ないモナドチュートリアル - konn-san.com

    世の中には、恐しい数のモナドチュートリアルがあって、それぞれモナドは象だとか、いや接ぎ木だ とか、プログラマブル・コンテナだとか、プログラム可能なセミコロンだとか、色々な説明がなされている。「モナド チュートリアル」で検索すれば、他にも色々に絵解きされた有象無象のモナドが大量に引っ掛かる。そうそう、モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?なんてのもあったな。 この記事の目的は別に、こうした既存のモナドチュートリアルを「間違ってる!」とか「わかるわけねーよ!」といって貶そうという訳ではない。実際、既に幾多書かれているチュートリアルの中でも、僕の云いたいことと殆んど同じようなことが書かれているものは沢山ある。 では、上の膨大なリストの末尾にまた一つ「わかりやすい比喩」を付け足そうというのか?というとそういう訳でもない。そうそう、モナドは比喩ではないというチュートリアル

    n314
    n314 2015/08/12
    ブクマしてなかった。今見ると分かりやすい。「足し算」のような基礎的で抽象的な概念で、ただの便利な法則ってことか。
  • 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 - あどけない話
  • LL脳がscalaの勉強を始めたよ その84 - Reinvention of the Wheel

    [まとめ] LL脳がscalaの勉強を始めたよ LL脳がscalaの勉強を始めたよ その83 Scalaコップの23章の続きをやっていきますよ。今回はfor式によるクエリーからやっていきますデス(´・ω・`) for式によるクエリー for式の記法はデータベース的に利用することが可能みたいですな(´・ω・`)なのでそんなクエリー的なfor式の使い方をいくつか見ていきますよ まずはデータベースとして利用する棚を用意します // オブジェクトをケースクラスで定義しますね case class Book(title:String, authors:String*) // を束ねて棚を構築しますデス val books:List[Book] = { List( Book("吾輩はである", "夏目漱石"), Book("山月記", "中島敦"), Book("臨終まで", "梶井久")

    LL脳がscalaの勉強を始めたよ その84 - Reinvention of the Wheel
  • 第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~

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

    第14回 関数脳のつくり方 Second Season ~モナドで悟りをひらく~
  • モナドはメタファーではない · eed3si9n

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

  • 1