タグ

monadに関するyou21979のブックマーク (4)

  • Common Lispでモナドする話 - IT系で覚醒めたい

    昨日こんなものがTLに流れてきた Clojureでモナド内包表記とStateモナド - http://basking-cat.blogspot.jp/2012/10/clojurestate.html なかなかおもしろいのでCLでも実装。 コアの部分はこれだけ。あとは型クラスよろしくモナドごとにメソッドを定義していく。 使い方はこんな感じ (perform ((a (list 1)) (b (list 2 3)) (c (list 3 4 5))) (+ a b c)) ; => (6 7 8 7 8 9) すばらしい。また別の例 (defun double-list (x) (list x x)) (perform ((a '(1 2 3)) (b (double-list a)) (c (double-list b))) c) ; => (1 1 1 1 2 2 2 2 3 3 3

  • Promises are the monad of asynchronous programming – The If Works

    In my introduction to monads in JavaScript we saw a couple of monads and examined the commonality between them to expose an underlying design pattern. Before I get on to how that applies to asynchronous programming we need to take one final diversion and discuss polymorphism. Consider the list monad that we implemented before: var compose = function(f, g) { return function(x) { return f(g(x)) }; }

  • 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 - あどけない話
  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

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

  • 1