タグ

monadに関するudzuraのブックマーク (11)

  • All About Monads モナドのすべて

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

    udzura
    udzura 2015/08/24
    すべてだ
  • Agda による圏論入門

    Menu Menu Agda で証明しながら圏論を学ぶという予定です。あまり入門ではないかも。 Higher-Order Categorical Logic の 0章に相等する内容です。 BitBucket category-exercise-in-agda source code Agda の入門の要約 Agda の入門 Agda の集合の Level Agda の record Agda のReasoning Caategory module と圏の入門 自然変換 IdentityFunctor と Hom Reasoning Monad の結合則 Sets と Monoid を使った Monad の例 Kleisli 圏の構成 ここまでが Monad を理解するための部分。以下は、Adjoint 関連です。 Adjoint から Monad を導く Kleisli 圏による Mona

  • もうちょっとだけモナド

    第7回 スタートHaskell2 (最終回) まだまだモナド (Reader, Writer, State, Error, ...) 発表資料

    もうちょっとだけモナド
  • 第3回 mapからモナドを理解する

    今回は「モナド(monad)」について説明します。モナドはHaskellの重要な特徴の一つなので,名前くらいは聞いたことがある人が多いでしょう。ただ,「モナドは難しい」という声もよく聞きます。 モナドとは一体なんでしょうか。前回,「HaskellはIOを取り扱うためにモナドと呼ばれる特別な仕組みを使用することで有名です」と書きました。Haskellは遅延評価を行うため,プログラマが処理の順番を確実に指定することができず,そのままでは入出力の処理には不向きです。モナドを使えば制御構造を導入できるため,この問題を解決できます。前回でいえば,(IO a -> IO a)にマッチする関数――finallyやprintThenAdd――を定義している部分がモナドに相当します。また,GHCiのプロンプトにもモナドが使われています。このように入出力操作を行うモナドの代表格が「IOモナド」です。ライブラリ

    第3回 mapからモナドを理解する
  • モナドを理解しにくい理由 - セカイノカタチ

    先日モナドを悟った、id:qtamakiです。(´・ω・`) Haskellの勉強を始めて、ほぼ一年が経ちました。 最近になってようやっと、モナドが何なのか把握してきた気がするのですが、ここまで理解するのにだいぶ時間がかかってしまいました。 そこで、現時点での理解を振り返ってみて、どうしてこんなに時間がかかってしまったのか、自分なりに考えてみました。 そもそも、CのポインターやJavaのオブジェクト指向など、コンピューティングやプログラミングパラダイムの根幹を担う概念を理解するのはとても大変ですよね。 思い返すと、始めてこれらの概念に触れた当時、そうとう頭の筋肉を疲労して時間もかかった記憶があります。 Cのポインターは1年ぐらい。オブジェクト指向に至っては、概念の理解に1年、実践で使いこなせるようになるのに3年ぐらいかかったと思います。 関数型言語に関しては、やはりモナドの概念が難しいとさ

    モナドを理解しにくい理由 - セカイノカタチ
    udzura
    udzura 2012/08/16
    なるほど
  • Haskell Day2012 - 参照透過性とは何だったのか

    3. 自己紹介 • @ruicc • Ruichi Kousuke • 好きな作曲家:A. Bruckner • 好きなバイオリニスト:Hilary Hahn • 好きな言語:Haskell • 爆発すればいい言語:PHP

    Haskell Day2012 - 参照透過性とは何だったのか
    udzura
    udzura 2012/05/29
    なるほど〜……腑に落ちた
  • 第11回名古屋Scala - rfなブログ

    9/17 に、第11回名古屋Scala勉強会に参加してきました。 今回は23章と24章の予定だったけど、盛り上がったので24章は次回に。 23章 for 式の再説 モナド (1) bind : M[A] => (A => M[B]) => M[B] 最初の M[A] がレシーバ (Scala) return : A => M[A] この 2 つがあるとき、M は モナド (Haskell, do式が使える) 不思議な抽象だけど、いろいろ便利 例:リスト、Option (Maybe), IO処理、メモリ状態、パーサ、etc. Scala だと、bind は flatMap、return は 単一コンストラクタ (ユニットコンストラクタ) に対応 for 式を使うには、map が必要 (map : M[A] => (A => B) => M[B] (Scala, 最初の M[A] がレシーバ)

    第11回名古屋Scala - rfなブログ
    udzura
    udzura 2012/01/20
    "モナドは、bind と return について、右/左単位元を持ち、結合則を満たさないといけない"
  • モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥

    これはRuby Advent Calendarの21日目の記事です*1。20日目は@sasata299さんのHerokuって便利だし利用までたった3ステップですお!!でした。 はじめに 当は「Pure Rubyで動くかっこいい形態素解析エンジンができた!!!」みたいな記事を書く予定でしたが、目標のクオリティに達しなかったのでリリースは延期されました。 クリスマスごろにリリースされるといいですね。 さて、この記事では、Haskellのような純粋関数型言語がどのように副作用を伴う処理を実現しているかについて、Rubyによる実装を使って解説します。モナドという言葉が全く出てこないのでアレルギーのかたも安心ですね。 純粋関数とは 同じ引数を渡す限り、どのような順番で何度呼んでも同じ結果が返るような関数のことです。 何が問題なのか puts 'hello!' res1=gets puts 'hel

    モナドという言葉を使うことなく、純粋関数型言語の入出力を解説する。Rubyで。 - <s>gnarl,</s>技術メモ”’<marquee><textarea>¥
    udzura
    udzura 2011/12/23
    かっこいい
  • Monad (functional programming) - Wikipedia

    In functional programming, a monad is a structure that combines program fragments (functions) and wraps their return values in a type with additional computation. In addition to defining a wrapping monadic type, monads define two operators: one to wrap a value in the monad type, and another to compose together functions that output values of the monad type (these are known as monadic functions). G

    Monad (functional programming) - Wikipedia
    udzura
    udzura 2011/10/27
    この辺に出ている Haskell コードを写経したい
  • Monad tutorial

    ESPM2 2018 - Automatic Generation of High-Order Finite-Difference Code with T...Hideyuki Tanaka

    Monad tutorial
    udzura
    udzura 2011/09/17
    [for:@twitter][has:for]
  • モナド: お前はもう知っている | Webシステム開発/教育ソリューションのタイムインターメディア

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

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