Current status A while ago, I wrote a piece describing a simple way of implementing MapReduce as a Monad in Haskell. As part of my further research I’ve discovered that in fact MapReduce is very naturally a Monad Transformer. This means that given any monadic type m one can associate to it a MapReduce type MapReduceT m. If m is an Additive Monad, then so is MapReduceT m. This is theoretically i
Introductions to Haskell These are the recommended places to start learning, short of buying a textbook. See also Meta-tutorial, another, shorter overview of tutorials aimed at helping you find the right one. Best places to start Introduction to Haskell (Spring 2013) An excellent tutorial to Haskell for beginners given as a course at UPenn by the author of the Typeclassopedia and Diagrams, Brent Y
最初に言っておくと、モナドって何なの?っていう答えは一切ないです。 自分にとってモナドは「とりあえず型さえ合わせておけば何かいろいろしてくれる奴」程度としか認識できていないので、そんな説明できないです。 で、そんな自分が脳内でどういう風にイメージしてモナドやモナド変換子の混ざったコードを書いているかというのを図に表してみました。 ここら辺の話を図にした感じです。 モナドを触ってみた - melpon日記 - HaskellもC++もまともに扱えないへたれのページ モナド モナドには return 関数と >>= 関数があります。 こんなイメージです。下側の線が普通の関数型の世界、上側の線がモナドの世界です。 どちらもモナド側の出力しか無いので、どちらかの関数を使ったら、モナドから脱出することはできません。 ただ、>>= 関数の右側が点線の箱になっていることが分かるでしょうか。 ここには、太
Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications. As you've read through this book, there have been a number of monads which have appeared: Handler, Widget and something to do with Persistent (let's call it YesodDB for now). As with most monads, each one provides some specific functionality: Handler gives access to the request and
A Haskell monad for infinite search in finite time 21 November 2008 Martin Escardo Computation, Constructive math, Guest post I show how monads in Haskell can be used to structure infinite search algorithms, and indeed get them for free. This is a follow-up to my blog post Seemingly impossible functional programs. In the two papers Infinite sets that admit fast exhaustive search (LICS07) and Exhau
モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド Version 1.1.0 このチュートリアルは、モナドの概念とその関数プログラミングにおける応用に ついて、初中級の Haskell プログラマにわかりやすく、利用価値があるような 解説をすることを旨としています。読者は Haskell になれていることを前提と しますが、モナドに関する経験は要求していません。このチュートリアルは、多 くの題材をカバーしています。後半のセクションでは、前半の題材をよく理解し ていることを前提とします。順をおって、モナドプログラミングを例示するため のサンプルコードがたくさん用意されています。一読で、すべての題材を吸収し ようというのはお勧めできません。 このチュートリアルは 3 つの部分で構成されています。最初の部分は、 関数プログラミングにおけるモナドの基本的
圏論の最大の武器はダイアグラムなので、モナドで悟りをひらきたいのならダイアグラムを使えばいいんじゃないでしょうか。 ダイアグラムの書き方 例えば、「 f :: a -> b 」とか「length :: [a] -> Int」は以下のように書きます。型を点で、関数を矢印で書きます。 ダイアグラムの利点は、fやlengthの中身を忘れて簡略化することができることです。人間の脳ができることには限りがあるので、注目する情報が少ない方が理解しやすくなるってスンポーです。 なお、 合成 g . f は図示する時に順が逆になるので気をつけて下さい。これは、合成関数の適用が g ( f x ) と書けることに由来してます。まずfを適用し、次にgを適用するということです。 return と >>= の図示 今回のダイアグラムの約束として、元となる型(Bool, Char, Int 等)は最下段に書きます。そ
Yesod is a Haskell web framework for productive development of type-safe, RESTful, high performance web applications. August 25, 2011By Michael SnoymanView source on Github Overview One of the powerful, and sometimes confusing, features in Haskell is monad transformers. They allow you to take different pieces of functionality- such as mutable state, error handling, or logging- and compose them tog
Do Applicative Functors generalize the S & K Combinators? 2/01/2011 If the title hasn't scared you off yet, here's the story: I was hacking on someone else's code on the plane and trying to wrap my head around some Applicative class code; in particular the code in question used the Applicative instance for ((->) a) i.e. functions. This turned my brain to cream-of-wheat and I had to take a break. I
Arrows are a new abstract view of computation, defined by John Hughes [Hug00]. They serve much the same purpose as monads -- providing a common structure for libraries -- but are more general. In particular they allow notions of computation that may be partially static (independent of the input) or may take multiple inputs. If your application works fine with monads, you might as well stick with t
This entry was posted by Jun Mukai on Friday, 6 November, 2009 alohakun が次のようなことを書いていたのが面白かったので、今日ちょっと帰宅途中につらつら考えたんだけど、twitterでつぶやくには長すぎるのでちょっと書いてみることにします。 malloc() って副作用あるの ? もちろん内部的にはあるだろうけど、外部的な振る舞いだけを見ると、有効なメモリリージョンの先頭アドレスが返ってくるだけだから、観測できないと思うんだけど。 (http://twitter.com/alohakun/status/5433639881) Haskell で乱数作るときってどうやって参照透明にしてるんだ ? 乱数を直接作る関数は無くて、シードを元に、乱数の無限リストを作るとかなのかな。ならば、確保可能アドレスの無限リストを作れば、副作
2011-05-28 Scala界の関数型プログラミング一派を代表する論客の一人、@djspiewak が 2010年に書いた “Monads Are Not Metaphors” を翻訳しました。翻訳の公開は本人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2010年12月27日 Daniel Spiewak 著 2011年5月29日 e.e d3si9n 訳 僕は今、約束を破るところだ。およそ三年前、僕は絶対にモナドの記事だけは書かないと自分に約束した。既にモナドに関する記事は有り余っている。記事の数が多すぎてその多さだけで多くの人は混乱している。しかも全員がモナドに対して異なる扱い方をしているため、モナドの概念を初めて学ぼうとする者は、ブリトー、宇宙服、象、砂漠のベドウィン (訳注: アラブ系遊牧民) の共通項を探す努力をするハメになっている。 僕は、この混乱した
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く