タグ

monadに関するitchynyのブックマーク (20)

  • Brian Beckman: Don't fear the Monad

    Cross posted from msdn's channel 9. Functional programming is increasing in popularity these days given the inherent problems with shared mutable state that is rife in the imperative world. As we march on to a world of multi and many-core chipsets, software engineering must evolve to better equip software engineers with the tools to exploit the vast power of multiple core processors as it won't c

    Brian Beckman: Don't fear the Monad
  • モナドはメタファーではない · eed3si9n

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

  • Functors, Applicatives, And Monads In Pictures - adit.io

    Written April 17, 2013 updated: May 20, 2013 Here's a simple value: And we know how to apply a function to this value: Simple enough. Lets extend this by saying that any value can be in a context. For now you can think of a context as a box that you can put a value in: Now when you apply a function to this value, you'll get different results depending on the context. This is the idea that Functors

  • モナドハンズオン前座

    「再代入なんて、あるわけない」 ~ふつうのプログラマが関数型言語を知るべき理由~ (Gunma.web #5 2011/05/14)parrotstudio

    モナドハンズオン前座
  • 絵で見るモナド · eed3si9n

    2012-08-21 John Wiegley さんの “Monads in Pictures” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2012年8月20日 John Wiegley 著 2012年8月21日 e.e d3si9n 訳 これはモナドのチュートリアルではないし、ここには数学用語も出てこない。稿は、既にモナドを一応使えるぐらいには習った人を対象とする。視覚化することで、何のために何をやっているかが明らかになるはずだ。 関数 モナドに対する直感を得る一つの方法として関数からモナドへの抽象化をたどるというものがある。関数が何をやっているのかを簡単な絵で表してみよう。Haskell の関数の呼び出しの構文を上に、同じ演算を視覚化したものを下に置いた: 関数はある値 a を投射 (map) して別の値 b を得る。中で何が起

  • Lost in Technopolis

    This is not a tutoral on monads, nor will I use any math terms here. This is for people who have learned enough about monads to use them, but want to get a better picture of what they’re doing and why they exist. Functions One way to develop a first intuition about monads is to follow the progression of abstractions from functions to monads. Here is a simple picture of what a function does. I’ve p

  • Monad Transformers Step by Step

    Information Martin Grabmüller: Monad Transformers Step by Step, draft paper, October 2006. 12 pages, A4 format, English. Abstract In this tutorial, we describe how to use monad transformers in order to incrementally add functionality to Haskell programs. It is not a paper about implementing transformers, but about using them to write elegant, clean and powerful programs in Haskell. Starting from a

  • モナドトランスフォーマーとmonad-control - maoeのブログ

    アドベントカレンダーのいいネタが無いなあと思っていたところ、ちょうど週末にあたらしいmonad-controlがリリースされたので、これを紹介したいなと思いました。 その前に、モナドトランスフォーマーというかっこいい名前の代物の話をちょっとだけしましょう。 モナドトランスフォーマーと例外処理 Haskellerの皆さんはきっと息をするかのように自然にモナドを使っていることと思います。標準で提供されているモナドは単機能なので、組み合わせたくなってきます。必然的に皆モナドトランスフォーマーに手を伸ばすわけです。実際のアプリケーションのコードを書くと、多くのモナドではベースモナドがIOになるでしょうから、今度は自作したカスタムモナドスタックでIOが投げる例外をハンドルしたくなるわけです。 ここでふとControl.Exception.catchの型をみると Prelude> :t Control

    モナドトランスフォーマーとmonad-control - maoeのブログ
  • 1 モナモナ言わない モナド入門 2011.12.3 山本和彦 2 お品書き 統一理論と大統一理論 コンテナの力の階層 内包表記 3 Q) なぜモナドが理解できないのか? A) 抽象的な概念だから 4 Q) 抽象の壁��

    1 モナモナ言わない モナド入門 2011.12.3 山和彦 2 お品書き 統一理論と大統一理論 コンテナの力の階層 内包表記 3 Q) なぜモナドが理解できないのか? A) 抽象的な概念だから 4 Q) 抽象の壁を突破するには どうすればいいのか? A) まず具体例を見てから 抽象化していくしかない 5 統一理論と大統一理論 6 物理学での抽象化 7 Haskell での抽象化 8 状態系統一理論 9 Parser データ定義 data Parser a = Parser (String -> [(a,String)]) Parser を生成する関数 pwrap :: a -> Parser a pwrap v = Parser $ \inp -> [(v,inp)] Parser を合成する関数 pbind :: Parser a -> (a -> Parser b) -> Par

  • モナドのすべて Haskell におけるモナドプログラミングの理論と実践に関する包括的ガイド

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

  • Haskel モナドの解説 from 2ch - From a Far East Island

    735 :デフォルトの名無しさん :2007/02/15(木) 00:11:39 >>733 3行で説明するのは俺には無理. まず定義5.これは実際に手を動かすと見えてくるので, 具体例でやるのが良いと思う.以下はその pdf にもある例. 1. リスト函手 ・型 A に対し T A は A のリストを作る: T A = [A] ・関数 f :: A -> B に対し T f :: [A] -> [B] は次の関数を作る: T f = map f ・μ_X は X 型のリストのリストをならして X 型のリストを作る: μ_X = concat ・η_X は X 型の値 x からそれだけからなる [X} 型のリスト [x] を作る: η_X = singleton = (:[]) これらを図に代入して,ちゃんと可換になることを確認するよろし. 736 :デフォルトの名無しさん :2007/0

    Haskel モナドの解説 from 2ch - From a Far East Island
  • BiwaSlide

  • Applicativeのススメ - あどけない話

    この記事の目的は、Applicative 信者による Applicative スタイルの布教です。 簡潔に結論を述べると、 foo = do a <- m1 b <- m2 return (f a b) のようなコードを書きたくなったら foo = f <$> m1 <*> m2 と書きましょうということ。 合い言葉は、「do と return をなくせ!」です。 FunctorとMonadの間 Functor を特殊化した型クラスがMonadで、Monadの方が強力です。なぜなら、メソッドが増えるからです。 Functorのメソッドはfmapです。fmapの別名を (<$>) といいます。(この記事では、(<$>) と liftM を同一視します。) そして、Monadのメソッドは、ご存知の通り (>>=) と return です。 FunctorとMonadの間にApplicative

    Applicativeのススメ - あどけない話
  • Haskell の mapM_ – foldr と (&gt;&gt;) を意識して

    1. mapM_ 関数は、どのように定義されているのか? Haskell の print 関数で文字列を連続して出力させたい場合、次のように書く。 main = do print "hoge" print "piyo" print "fuga" これを短かく書きたいなら、 main = mapM_ print ["hoge", "piyo", "fuga"] 最初、意味もわからず mapM_ の動作を覚えようとした。 ^^; なぜこのように書けるのだろう? 2. map, fold 系の復習から まずは map, fold 系の復習から。 map 関数は「各要素へ指定された関数 f を適用」する。 リストの要素を 2 倍するなら、 *Main> map (*2) [0..5] [0,2,4,6,8,10] これに対して、fold 系 の関数は大雑把なイメージとして、「各要素の間に二項演算子

    Haskell の mapM_ – foldr と (&gt;&gt;) を意識して
  • Haskell の sequence 関数 - foldr をイメージして

    「Haskell の mapM_ – foldr と (>>) を意識して」のつづき 1. mapM_ 関数を理解するには、sequence 関数の理解が不可欠 前回は、 mapM_ 関数 の動作について見た。しかし、どうも感覚的に全然身に付いていない。 mapM_ を使おうとすると、 「あれ?一体これ何してるんだっけ」 と考え込んでしまう。返り値に関心のある mapM にしても同じ。 多分、この関数のベースとなっている sequence 関数 をちゃんと理解してないために、頭の中にイメージを描けないと思う。 (+_+) Prelude には、 sequence :: Monad m => [m a] -> m [a] Evaluate each action in the sequence from left to right, and collect the results. 型を見れ

  • Stateモナドを今度こそ理解する - Pixel Pedals of Tomakomai

    3年前に理解しようとして惨敗した*1HaskellのStateモナドの解説に、リベンジしようと思います。圏論をちょっとはかじったので、今度こそまともな解説ができるはず。 と言うことで、今回は前編です。圏論の知識は前提とはしてないですが、集合と写像にアレルギーがあるときついかもしれません。 *1:3年前の敗因は、圏をSetsだと思い込んでた上に関手を「写像を写像に移す写像」だと誤解してたことでしょうか。

    Stateモナドを今度こそ理解する - Pixel Pedals of Tomakomai
  • Introduction to "How to Declare an Imperative"

    論文紹介:How to Declare an Imperative Philip Wadler. ACM Computing Surveys, 29(3):240--263, September 1997.(WWW:Wadler: Monads) 1. 導入 2. 相互作用へのmonadアプローチ 基的な命令 Equational reasoning 値を受け入れる命令 letの類似物 monadの満たす法則 monadと命令型プログラミング C関数の直接呼び出し 3. 相互作用に対するその他のやり方 同期されたストリーム(synchronized stream) continuation 線形論理(linear logic) 副作用(side effect) 4. 関連研究 5. 結論 一階と高階 バック・トラック 1.導入 400年程前デカルトの問題 心は生体とどう相互作用するのか?

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

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

    檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」
  • Understanding Monads With JavaScript — igstan.ro

    May 02, 2011 Update Nice people have translated this article into Portuguese and Russian. For the past weeks I've been working hard studying monads. I'm still learning Haskell, and to be honest I thought I knew what monads are all about, but when I wanted to write a little Haskell library, just to sharpen up my skills, I realized that while I understood the way monadic bind (>>=) and return work,

  • Translation from Haskell to JavaScript of selected portions of the best introduction to monads I've ever read – The If Works

    (With apologies to John Gruber and A Neighborhood of Infinity.) I know, I know, the world does not need yet another introduction to monads (or yet another article complaining that world does not need yet another introduction to monads). So you’ll be glad to know this isn’t one of those, in the sense that it’s not new. I thought I’d write it because, first, monads are worth knowing about, and secon

  • 1