タグ

monadに関するNyohoのブックマーク (38)

  • モナド則とプログラミング - Qiita

    1. (return x) >>= f ≡ f x 2. m >>= return ≡ m 3. (m >>= f) >>= g ≡ m >>= (\x -> f x >>= g) 等号(≡)は置き換え可能であるという意味で読んでください。上から左単位元、右単位元、結合則と呼ばれます。 モナド則が満たされたモナドはプログラマにとって何が嬉しいのでしょうか。 端的に言ったらコードを分割/組み合わせ/抽象化等が出来るため、嬉しいのです。 もう少し言えば、モナド上では自然にプログラミング出来るから嬉しいのです。 もう少し言えば、モナド上でいつも通りエンジニアリング出来るから嬉しいのです。 モナド則のプログラミング上の意義とは、理解してしまうと当に当たり前になってしまいます。 三日後には嬉しさのことなど忘れてその当たり前のメリットを享受することでしょう。 そうして誰もHaskellのモナド則につ

    モナド則とプログラミング - Qiita
    Nyoho
    Nyoho 2018/09/05
  • Notes for research students

  • 圏論のモナドとHaskellのモナド

    Symbolic Computations in Conformal Geometric Algebra for Three Dimensional O...Yoshihiro Mizoguchi

    圏論のモナドとHaskellのモナド
  • 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」

    気まぐれと偶然となりゆきで、ここ2,3回はモナドを話題にしました。googleで「モナド」を引いてザッと眺めると、「モナドはむずかしいー」とか「モナドで挫折した」みたいな雰囲気が感じられて、説明芸人の血が少し騒ぎましたね。「なら、予備知識ゼロでモナドの説明をしてやろうじゃねーか」と。 タイトルはだいぶ煽っちゃった…… けど、ハッタリじゃないつもり…… けど、実際はどうかな? ※印刷のときはサイドバーが消えます。 内容: とりあえず、あたりさわりなくモナドの来歴を紹介する こんな課題を考えてみよう:副作用付き計算 カウントアップする関数達 カウントアップしたい意志を戻り値で伝える それでは、いったい誰がカウントアップをするのだ 関数の引数の型をCountup型にまで拡張する そして、これがモナドだ とりあえず、あたりさわりなくモナドの来歴を紹介する 今からここで説明する「モナド(monad)

    檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」
    Nyoho
    Nyoho 2017/05/16
  • 確率とモナドと確率的プログラミング - Qiita

    この記事はADVANCED BEGINNERからCOMPETENTの方を対象読者として書かれています。 コインの裏表やサイコロの出目はよく確率変数によって表されます。確率変数が互いに依存しているようなモデルを記述する手法としてグラフィカルモデルと云うものがあります。例えば、ある分布に従って表が出る確率が偏ったコインが選ばれた後、そのコインを投げて表裏が決まるような実験を考えた場合、コインの確率変数を $X$, コインの表裏の確率変数を $Y$ とすると、この系を記述するグラフィカルモデルは このようになります。ところで $X$ は表が出る確率Double上の確率変数RVar Doubleで、 $Y$ は $X$ の結果に依存したコインの裏表Bool上の確率変数Double -> RVar Boolであると考えるとします。今コインがランダムに選ばれると言う構造を 忘れて コインの表裏が出る確

    確率とモナドと確率的プログラミング - Qiita
  • IO (Maybe a)

    Qiita http://qiita.com/eielh/items/2f0f774914431990ec37 コード https://gist.github.com/eiel/836ceaad76c594f896a56e3b34c01cb3

    IO (Maybe a)
  • IO (Maybe a)というタイトルでモナド変換子について学んだことを話した - #LT駆動 | そんなこと覚えてない

    LT駆動27に参加しました。 「IO (Maybe a)」という話をした。 自分なりにモナド変換子について整理した。 一度文章にしてからスライドにした。 そっちはざっくりQiitaにアップしておいた。 IO (Maybe String)を触ってみる - Qiita サンプルコード 個人的には先入観で誤解していた部分が整理できたので、満足している。 特になにか図にしてみるという行為は面白いとおもっている。 勉強会で発表するという行為はとても勉強になる。(自戒) LT駆動開発は毎月開催されているので、みなさまの参加を楽しみにしています。

  • 難しいのは見た目だけ!?Haskellのモナドの「たった2つのルール」を簡単に理解する! - Qiita

    この記事は Wantedly Advent Calendar 25日目の記事です。 最終日です!気合いが入りますね!! Introduction 今回は Haskell のモナドの話をしたいと思います。 Haskell を学び始めた時、誰もが一度は経験するのが「モナドって何だ?」という疑問です。「Haskell モナド」で検索してみても、圏論を絡めた小難しい説明ばかりが出てきて、よく分からない事が往々にしてあります。 ところが、実は「Haskell におけるモナド」を理解する為に、圏論のモナドを理解する必要はありません。何故なら、「Haskell においてモナドである」為に必要なのは、「たった2つのルールを満たす事」だけだからです! この記事では、「モナドとは何か」を簡単に説明したいと思います!! Haskell におけるモナドとは? Haskell におけるモナドとは、誤解を恐れずに言え

    難しいのは見た目だけ!?Haskellのモナドの「たった2つのルール」を簡単に理解する! - Qiita
  • Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ

    Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ

    Monadic Programmingのススメ - Functional Reactive Programmingへのアプローチ
    Nyoho
    Nyoho 2015/12/10
  • Profinite Monads, Profinite Equations, and Reiterman's Theorem

    Nyoho
    Nyoho 2015/11/09
  • モナドがくれたものという話をした - #LT駆動 | そんなこと覚えてない

    LT駆動開発18 - 秋(not 安芸)の宮島で「モナドがくれたもの」というタイトルでLTしてきました。雑なLTです。 モナドの利点を問われたので、似ているパティーン(パターン)が除去できるんだぜ。みじかくかけるんだぜ。 「裏で毎回同じことやってくれてるんすよ。これはコンピュータの得意なことだよな。だけど、その内容はモナドの種類によって違うんだぜ」 的な話をしておきました。 動作確認につかったコードはここに投げておきます。

    Nyoho
    Nyoho 2015/09/22
    モナドの勉強に役立ちそう。
  • SwiftのOptional型を極める - Qiita

    投稿の個別の説明( Optional とは何か、 ?. と map, flatMap の関係、その背後にあるモナドという概念)は 2017 年現在でも通用するものですが、 Swift の Optional の使い方としては、僕の考えとのズレが大きくなってきました。 Swift の Optional をいつ・どのように使うべきかについてもまとめた ので、そちらも併せて御覧下さい。 Optional は Swift の仕様の中でもっとも素晴らしいものの一つだと、僕は考えています。 null参照 (多くの言語で nil や null と呼ばれるもの)を発明したトニー・ホーアは次のように述べています[^1]。 それは10億ドルにも相当する私の誤りだ。null参照を発明したのは1965年のことだった。(中略)これは後に数え切れない過ち、脆弱性、システムクラッシュを引き起こし、過去40年間で10億ド

    SwiftのOptional型を極める - Qiita
    Nyoho
    Nyoho 2015/09/01
    map, flatMap
  • モナドって結局何なのよ? — join to Monad v0.1.3 documentation

    モナドって結局何なのよ?¶ Haskell を勉強しようとすると必ず「モナド」ってのが出てきます。困ったものです。数学とか圏論とか関係があるらしくって、何が書いてあるんだか分からなくって嫌になってしまいます。でもね、Haskell って凄いらしいじゃないですか、格好良いらしいじゃないですか。ここはちょっとがんばって色々考えてみましょう。 そもそも Haskell って何なのよ?¶ 何なんでしょうね、Haskell って。コンピュータ言語らしいんです、あ、それは分かってると。良く挙げられる性質は次な感じ?: 関数型言語 強い型付け 遅延評価 参照透過 ここでちょっと型に関して見てみましょう。試しに Haskell の実装の 1 つである Hugs で 1 について考えてみます。Hugs では :type や :info というコマンドで hugs に型の情報などを質問することができます。例え

  • JavaScriptのモナド | POSTD

    恒等モナド Maybeモナド リストモナド 継続モナド Do 記法 連鎖呼び出し モナド とは、一連のステップによって実行する計算を記述する際に使用する、1つのデザインパターンです。 純粋関数型プログラミング言語 では、モナドは 副作用を管理する ために広く利用されていますが、 マルチパラダイム言語では、モナドで複雑性を制御することもできます 。 モナドはデータ型をラップして、空の値を自動的に伝播したり( Maybe モナド)、非同期コードを簡略化したり( 継続 モナド)といった、新たな動作を既存のデータ型に追加します。 一連のコードをモナドと見なすためには、その構造には次に挙げる3つの要素が含まれていなければなりません。 型コンストラクタ — 基的な型に対してモナドの動作を追加した型を作成する機能です。例えば、基的なデータ型 number に対して、 Maybe<number> とい

    JavaScriptのモナド | POSTD
  • モナド則だけみつめていたい

    LT駆動開発14の発表資料です。 https://github.com/LTDD/Sessions/wiki/LT%E9%A7%86%E5%8B%95%E9%96%8B%E7%99%BA14 解説 http://blog.eiel.info/blog/2015/05/02/want-staring-monad-only-ltdd-14/ ゼノブレイドクロスが欲しいです。

    モナド則だけみつめていたい
  • モナド則だけ見つめていたい - LT駆動開発14 | そんなこと覚えてない

    LT駆動開発14に参加した。 ゼノブレイドクロス発売記念でモナドの話をしといた。 Stateモナドを簡約して、Stateモナドを説明しようとおもったけどうまくいかなくてボツになりました。 Haskell - Stateモナドを手で簡約してみたりしていた - Qiita そんなわけでHaskell/圏論 - Wikibooksを元ネタにモナド則を辿ってみました。 a -> M bって型の関数を並べるにはfmapしてjoinしてを間にはさむことがポイントな気がしたことがあったのでその話です。 a -> M bな関数を組み合わせると M b -> M (M c) になって M (M c) -> M (M (M d)) とどんどんMが増えていってしまうのですが、モナドであればM dにできるわけです。 a -> M bってなんなんだって話になってきますがM a -> M bでも良いけど、a -> M

    Nyoho
    Nyoho 2015/05/03
    「何度も同じことをしないといけない部分を隠すことができます。」なるほど〜
  • GitHub - alskipp/Swift-Adventures-In-Monad-Land: A Swift adventure with Optionals, Monads, bananas and squirrels

    You signed in with another tab or window. Reload to refresh your session. You signed out in another tab or window. Reload to refresh your session. You switched accounts on another tab or window. Reload to refresh your session. Dismiss alert

    GitHub - alskipp/Swift-Adventures-In-Monad-Land: A Swift adventure with Optionals, Monads, bananas and squirrels
  • モナドの本当の力を引き出す・・・モナドによる同期/非同期プログラミングの抽象化 - xuwei-k's blog

    以下の2つの続き ScalaでFutureとEitherを組み合わせたときに綺麗に書く方法 FutureとEitherの話の続き(ApplicativeとMonadの違い) 上記の2つ(特に最初の方)を読んだことを前提で書くので、読んでない人は先にそちらを読みましょう。 なんだか少し関連する話(?)で盛り上がっていて、書かないといけない気がしてきたので 非同期プログラミングの難しさとScalaのFuture そのtogetterの議論について色々書きたいこと*1もありますが、それは置いておき、表題の「モナドによる同期/非同期プログラミングの抽象化」について書きます。というか、(非同期プログラミングの話より)便乗してモナドとモナドトランスフォーマーの便利さを話したいだけかもしれません(?) 前回2つは「Future使って非同期にしても、だいたい関数の体同じでいけるよ」ということを書きました

    モナドの本当の力を引き出す・・・モナドによる同期/非同期プログラミングの抽象化 - xuwei-k's blog
    Nyoho
    Nyoho 2015/03/29
  • モナド基礎勉強会 vol.2 #monadBase

    hiratara @hiratara @t6s @kyon_mm ようやく文脈理解しました。前回名古屋で話したモノイダル圏とモノイドの定義、自己関手の圏が持つモノイダル構造の辺りは知ってる前提で話すつもりですので、話していただけると大変助かります! #monadBase 2015-03-15 23:49:32

    モナド基礎勉強会 vol.2 #monadBase
  • Haskell の Monad とは言語内DSLのフレームワークである - あどけない話

    この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の利用者に分かるかは不明です。 Haskellを勉強したのですから、 代数データ型 型クラス は分かっていることにします。Monad は、単なる型クラスの一つで、それ以上でもそれ以下でもありませんから、この二つが分かってないと話になりません。 また、言語内DSL(以下、DSLと略記)という考え方を知っていることも仮定します。Monad とは、DSLのフレームワークという直感を与えるのが、この記事の主眼ですからね。 さらに、構造化定理をいう単語を聞いてもビビらない人を想定しています。逐次、反復、分岐があれば、計算しうる計算はすべて記

    Haskell の Monad とは言語内DSLのフレームワークである - あどけない話