タグ

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

  • Extensible Effects はモナド変換子に対する救世主になり得るか?

    Extensible Effects はモナド変換子に対する救世主になり得るか? konn-san.com Oleg, Sabry and Swords らによる Extensible Effects: An Alternative to Monad Transformers の論文を読んだメモ的な何かです。モナド変換子に関する簡単な現状確認から入ってはいますが、想定読者層は日常的にモナドやモナド変換子を用いたプログラムを書いている人達です。 どちらかというと自分向けのメモの性格が強いので、詳しい部分は論文を参照してみてください。 背景:モナド変換子とその問題 Haskell を中心に、関数型言語では副作用のある函数を合成するための手段としてモナドが広く用いられている。モナドは非常に強力な抽象化で、およそ副作用と呼べるものはモナドを使って定式化することが出来た。例えば、大域的な環境 r を

    Extensible Effects はモナド変換子に対する救世主になり得るか?
    tarao
    tarao 2015/12/17
  • What is indexed monad?

    As ever, the terminology people use is not entirely consistent. There's a variety of inspired-by-monads-but-strictly-speaking-isn't-quite notions. The term "indexed monad" is one of a number (including "monadish" and "parameterised monad" (Atkey's name for them)) of terms used to characterize one such notion. (Another such notion, if you're interested, is Katsumata's "parametric effect monad", ind

    What is indexed monad?
    tarao
    tarao 2015/08/28
  • Data::Monad::CondVar でAnyEvent を使いやすくする - Articles Advent Calendar 2011 Hacker

    こんにちは。hiratara です。みなさん、意識は高まっていますか? 私は上々です。今回は拙作の Data::Monad::CondVar というモジュールを紹介させて頂きます。 モジュール名にMonad というNGワードが入っていますが、このモジュールはAnyEvent 用のJSDeferred です。JSDeferred はみなさん好きですね? 嫌いな人は好きになるまで何度も繰り返し使って好きになればいいと思います。 コールバック方式の関数を順に呼び出す場合、一般に記述がネストします。 use AnyEvent; sub add1($$) { my ($n, $cb) = @_; my $t; $t = AE::timer 1, 0, sub { $cb->($n + 1); undef $t; }; } my $cv = AE::cv; add1 0 => sub { my $n

    Data::Monad::CondVar でAnyEvent を使いやすくする - Articles Advent Calendar 2011 Hacker
  • 最強OCamlでセッション型を実現 - keigoiの日記

    この記事は OCaml Advent Calendar 2012 の 18日目の記事です。 OCamlでセッション型を実装した、というお話です。ちょっと時間がないので簡潔に書いています。 ソースはこちら セッション型 セッション型とは: 通信チャネルの型です プライベートな二者間のメッセージ送受信が整合していることを保証してくれます。(定義によっては多者間) 例えば let thread1 () = send c "Hello"; send c 123 という関数は文字列と整数をチャネルcに送るが (send c vはチャネルcに値vを送るプリミティブとする。以下同様)、 let thread2_bad () = let i = recv c in let j = recv c in print_int (i+j) は整数を2つチャネルcで受けるため(recv cはcで受信した値を返す)、

    最強OCamlでセッション型を実現 - keigoiの日記
  • 「JavaScriptでの非同期関数合成」を継続モナドで - terazzoの日記

    お題: 複数個の関数があって、関数を呼び出した結果を使って関数を呼び出して…っていうのを1個の関数にします。 JavaScriptでの非同期関数合成 - monjudoh’s diary 関数の形を見てみます。 // 1を足す function add1(callback,arg){ callback(arg+1); } コールバック関数を渡して、戻り値ではなくコールバック関数を呼び出してもらう事で結果を取得する……これって「CPS(継続渡し形式)」!CPSなら分かるわ!(当か?) 参考にしたサイト: http://www.h4.dion.ne.jp/~unkai/js/js12.html http://practical-scheme.net/docs/cont-j.html JSDeferredで考えるモナド - JavaScriptで遊ぶよ - g:javascript Haske

    「JavaScriptでの非同期関数合成」を継続モナドで - terazzoの日記
  • Easy Monad

    8. Monad この文書では Monad について述べます。Monad は成功しないかも知れない 計算を組み合わせる手法で、探索、IO、構文解析 などに使われます。 Monad は実はそれほど難しい概念ではありません。 "Haskell は Monad を使って参照透明性をおかすことなく IO を実現している。" といううたい文句や、"Monad を理解するのは難しいかもしれない" などという脅し を気にしないで、Haskell 98 にある定義を見れば分かりやすいと思います。 上級 Haskeller は Monad を駆使して難しいことをやりますが、 それは Monad が難しいのではなく、彼らのやっていることが難しいだけです。 つまり、Monad を使うと難しいことが出来るが、Monad そのものが難しいわけではない ということです。 1. Monad は class Haskel

    tarao
    tarao 2012/01/31
  • 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,

  • Monad syntax for JavaScript – The If Works

    Following on from my introduction to monads in JavaScript, and before I get into how they apply to asynchronous programming, I’d like to take a quick detour to improve the usability of the tools we’ve built up. Recall we have a function for composing functions: var compose = function(f, g) { return function(x) { return f(g(x)) }; }; // sine :: Number -> (Number,String) var sine = function(x) { ret

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

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

    tarao
    tarao 2012/01/31
  • perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) : 404 Blog Not Found

    2010年05月19日20:00 カテゴリLightweight Languages perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) 参照透過性ふいたwww 不完全にしておよそ正しくないプログラミング言語小史 1990 ? サイモン・ペイトン・ジョーンズ、ポール・フダック、フィリップ・ワドラー、デミ・ムーアの夫、ならびに動物の倫理的扱いを求める人々によって構成される委員会により、遅延評価を行う純粋な関数型言語Haskellが作られる。副作用の制御に使われるモナドの複雑さのため、Haskellには抵抗を持つ人々がいる。ワドラーは批判を和らげるために、こう語っている。「モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?」 「何か問題でも」と言われた場合は、自分の問題にして解いてみることにしている。 というわけでIOモナドをJSとPerl

    perl & javascript - で単なる自己関手の圏におけるモノイド対象(笑) : 404 Blog Not Found
    tarao
    tarao 2012/01/31
  • 檜山正幸のキマイラ飼育記 - 世界で一番か二番くらいにやさしい「モナド入門」

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

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