タグ

monadに関するkiyo_hikoのブックマーク (66)

  • JavaScriptのモナド | POSTD

    恒等モナド Maybeモナド リストモナド 継続モナド Do 記法 連鎖呼び出し モナド とは、一連のステップによって実行する計算を記述する際に使用する、1つのデザインパターンです。 純粋関数型プログラミング言語 では、モナドは 副作用を管理する ために広く利用されていますが、 マルチパラダイム言語では、モナドで複雑性を制御することもできます 。 モナドはデータ型をラップして、空の値を自動的に伝播したり( Maybe モナド)、非同期コードを簡略化したり( 継続 モナド)といった、新たな動作を既存のデータ型に追加します。 一連のコードをモナドと見なすためには、その構造には次に挙げる3つの要素が含まれていなければなりません。 型コンストラクタ — 基的な型に対してモナドの動作を追加した型を作成する機能です。例えば、基的なデータ型 number に対して、 Maybe<number> とい

    JavaScriptのモナド | POSTD
  • ソフトウェアエンジニアとしてモナドを完全に理解する / make-perfect-sense-of-monad

    モナドを完全に理解する

    ソフトウェアエンジニアとしてモナドを完全に理解する / make-perfect-sense-of-monad
    kiyo_hiko
    kiyo_hiko 2019/12/15
    なるほどわからん
  • モナド(clojure.algo.monads)よくわからないからとりあえずいじってみた - FLINTERS Engineer's Blog

    こんにちわ、k_imaizumiです。 関数型の言語の情報を見てるとよく目にするモナド。 なんかこいつを説明するためにいろんな記事がわんさかありますが、結局よくわからない。 すごいHaskellたのしく学ぼう!を読むも難しくてよくわからない。 よくわからなすぎて手がでないままってのもアレだなぁということでとりあえずいじってみたってのが今回の記事です。 HaskellだとHaskellそのものの理解がアレなので今回はclojureでいじることにしました。 なんかライブラリがあるそうなのでこれをつかってみました。 github.com なんかモナドってうんたらモナドってな感じで種類があるそうです stateとかmaybeなんかは名前は聞いたことある感じです サンプルコードを見るとstateの方は読むの嫌になる感じですが、maybeの方は分かりやすかったんで、これみながら適当にいじってみることに

    モナド(clojure.algo.monads)よくわからないからとりあえずいじってみた - FLINTERS Engineer's Blog
  • LogicT

    LogicT Backtracking, Interleaving, and Terminating Monad Transformers を紹介します。 Abstract 任意のモナドでバックトラッキングを可能にするモナド変換子を設計、実装します。 このライブラリは次のような操作を提供します。 公平な選言: interleave 公平な連言: >>- 条件分岐: ifte 枝刈り: once これらは msplit という一つプリミティブで実装することができます。 次の2つの実装を紹介します。 成功と失敗の継続を使ったもの 限定継続を使ったもの 1. Introduction モナドを使ったプログラミングの利点は副作用や計算の観念を一般化して、非決定性やバックトラッキングのような評価モードをサポートします。 MonadPlus 型クラスには多くの実践的な応用があります。 非決定的な計算

    kiyo_hiko
    kiyo_hiko 2018/10/30
    "任意のモナドでバックトラッキングを可能にするモナドトランスフォーマー"
  • The monad laws

    モナド則 三つの基則 「失敗」は付けたし 出口はない Zero と Plus 要約 このチュートリアルではいままで、技術的な議論を避けてきました。しかし、 モナドについて考えるべき技術的な要点が2、3あります。モナド演算は、 「モナド公理」として知られている、いくつかの法則群に従わなければ なりません。これらの法則は Haskell のコンパイラが強制するものでは ありません。したがって、すべての Monad のインスタンスと 宣言したものが、これらの法則に従うことを保証するのはプログラマ自身です。 Haskell の Monad クラスは、まだ見ていませんが、最小限の定義 以上にいくつかの関数を含んでいます。結局、多くのモナドは標準のモナド則 以外の規則にも従っています。Haskell のクラスにはこうした拡張されたモナド をサポートするためのものがあります。 三つの基則 モナドの概

    kiyo_hiko
    kiyo_hiko 2017/10/17
    "IOモナドから脱出することはできませんから…型構築子IO を含まないような関数の定義を書くことは不可能です… IOを含まないような結果を 返すあらゆる関数はIOモナドを使わないことが 保証されているということです"
  • プログラミング言語探訪

    Walking Through Programming Languages Languages Standard ML Haskell Misc. About

  • Haskell の Monad とは言語内DSLのフレームワークである - あどけない話

    この記事は、Haskellを勉強してある程度分かったけど、Monadで挫折した人のための記事です。10分間で、Monadに対する納得感を得ることを目的としています。他の言語でいう「モナド」にも通用する内容ですが、Haskell の文法や用語を用いますので、他の言語の利用者に分かるかは不明です。 Haskellを勉強したのですから、 代数データ型 型クラス は分かっていることにします。Monad は、単なる型クラスの一つで、それ以上でもそれ以下でもありませんから、この二つが分かってないと話になりません。 また、言語内DSL(以下、DSLと略記)という考え方を知っていることも仮定します。Monad とは、DSLのフレームワークという直感を与えるのが、この記事の主眼ですからね。 さらに、構造化定理をいう単語を聞いてもビビらない人を想定しています。逐次、反復、分岐があれば、計算しうる計算はすべて記

    Haskell の Monad とは言語内DSLのフレームワークである - あどけない話
  • Haskell/Understanding monads - Wikibooks, open books for an open world

    There is a certain mystique about monads, and even about the word "monad" itself. While one of our goals of this set of chapters is removing the shroud of mystery that is often wrapped around them, it is not difficult to understand how it comes about. Monads are very useful in Haskell, but the concept is often difficult to grasp at first. Since monads have so many applications, people often explai

  • Iterator パターンの本質 · eed3si9n

    2011-12-17 これは Scala Advent Calendar 2011 の 17日目の記事です。 specs2 の作者であり、@etorreborre としても活発に発言を続けるシドニーの強豪 Eric Torreborre さんが書いた “The Essence of the Iterator Pattern” を翻訳しました。翻訳の公開は人より許諾済みです。翻訳の間違い等があれば遠慮なくご指摘ください。 2011年6月24日 Eric Torreborre 著 2011年12月17日 e.e d3si9n 訳 去年読んだ論文で一番気に入ったのは “The Essence of the Iterator Pattern”(以下、EIP)だ。これを読んだ後で、今まで何年も使い続けてきたあるものに対する考えがガラリと変わった。それは、for ループだ。 この論文の中からいくつか

  • Prologのお勉強 - かもめのお宿

    kiyo_hiko
    kiyo_hiko 2014/10/19
    不勉強なのでホーン節自体既にモナドに似てるような気がしなくもない。参考にする
  • (402) 1 Σモノイド─メタ変数と明示的環境を持つ高階構文 浜名 誠 Σ モノイドとは Fiore,Plotkin,Turi らによって提案された変数束縛と代入の機構を持つ言語の代数的モデルである. 本論文では�

    kiyo_hiko
    kiyo_hiko 2014/01/29
    「Σモノイド─メタ変数と明示的環境を持つ高階構文」
  • 第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド

    Haskellでは,グローバル変数の使用による副作用の発生を防ぐため,グローバル変数として使える可能性のある機能は,IOモナドやSTモナドといった特定のモナドでしか利用できないようになっています。しかし,ときにはグローバル変数に頼りたくなることもあるでしょう。 そんなときでも,物のグローバル変数を使わなければならない場合は実はあまりありません。たいていは,より制限された何らかのモデルで代用できます。代わりに利用できる機能さえ知っていれば,グローバル変数を使わずに済むのです。 今回は,グローバル変数の代わりに使用できる二つのモナドを紹介します。 「読み取り専用」のReaderモナド プログラムの実行時に決まるような大域的な情報を,プログラムの何個所かで共有するにはどうすればよいでしょうか? 同じ値を利用する場合,その値を引数やデータ型の一部として関数から関数へと受け渡していくのが常道です。

    第29回 グローバル変数の代わりに使えるReaderモナドとWriterモナド
  • 初心者のモナド

    これは、 Haskell Advent Calendar 2012 20日目の記事です。 はじめに Haskellで(趣味の)プログラムを書き始めて、ほぼ1年になりました。最初、モナドを調べたとき、さっぱり分からなくて困りましたが、今は少なくとも使うことはできるようになりました。初心者ですが、モナドの壁を振り返ります。 モナドを理解するときの壁 モナドが何かについて考えること モナドの(>>=)は、何か分からない モナド則が謎 今振り返ると、大雑把にいって、上の3つの壁がありました。 「モナドが何かについて考えること」による壁 1年前、「Haskell のIOは、モナドだ」というのを見て、モナドに興味を持ちました。自然の成り行きとして、「モナド」が何かを調べました。すると「モナド」は、圏論の用語だというところに行き着くわけですが、圏論はなかなか敷居が高くて理解することはできませんでした。(

  • 単なる自己関手の圏における... (2) 関手 | tnomuraのブログ

    圏論で最も重要な概念は「関手」だ。関手とは一口に言うと、一つの圏からもう一つの圏への写像だ。写像といっても、圏は対象と射からなっているので、集合から集合への関数のように簡単にはいかない。関手は対象と対象同士、関数と関数同士の射を組みにしたものからなっている。 例えば、集合 A = {1,3,5, .. } と 集合 B = {[1],[3],[5], ... } および恒等写像 id , 関数の合成演算 (.) とたった一つの A -> B の関数 f x = [x + 2] からなる圏を C とする。 同様に集合 D = {2,4,6, ... } と 集合 E = {[2],[4],[6]} および恒等写像 id, 関数の合成演算(.)、と D -> E の関数 g y = [y * 2] からなる圏を G とする。 この場合、圏 C から 圏 G への関手 F は次の関数の組になる。

    単なる自己関手の圏における... (2) 関手 | tnomuraのブログ
  • 圏論でアハ体験 - Bug Catharsis

    もう1週間以上前になりますが、Code2012という合宿イベントに参加してきました。いろいろな方との交流あり、温泉あり、クラウディアさんありと大変楽しかったので、ぜひ来年も参加したいです。 で、VBerのくせにそちらで「5分じゃわからないモナド - 圏論なんて華麗にスルー」というタイトルでLTをしてきました。なぜか、宴会の後にLTをやるという謎なタイムスケジュールとなっていたため、十分にアルコールが回った状態でお話をしました。時間通りにジャスト5分で話しきれたのは奇跡です。来年はそのあたり考慮してもらいたいかも...しれません。LTの後にいくつか質問をいただいて、モナドや圏やF#についてなんだか結構な時間追加でしゃべったような気がします。 LTの要点としましては、「モナドを使うのに圏論の知識は必要ない。」という意見はまったくそのとおりなのだけど、だからといって関数型言語を学ぶ人が圏論に触れ

    圏論でアハ体験 - Bug Catharsis
  • 絵で見るモナド · eed3si9n

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

    kiyo_hiko
    kiyo_hiko 2013/12/26
    もう少しで理解できそう
  • yamicha.com's Blog

    kiyo_hiko
    kiyo_hiko 2013/12/26
    結合性と恒等関数が要るらしい // モノイドは二項演算と単位元、逆元 // C++のテンプレートにあたるような技能を標準装備してますって話など
  • もう一つのモナド:掲示板:シムダンス「四次元能」|Beach - ビーチ

    拍手数ランキング 一覧を見る 過去の発言 icon2024年 ├5月 ├4月 ├3月 ├2月 ├1月 icon2023年 ├12月 ├11月 ├10月 ├9月 ├8月 ├7月 ├6月 ├5月 ├4月 ├3月 ├2月 ├1月 icon2022年 ├12月 ├11月 ├10月 ├9月 ├8月 ├7月 ├6月 ├5月 ├4月 ├3月 ├2月 ├1月 icon2021年 ├12月 ├11月 ├10月 ├9月 ├8月 ├7月 ├6月 ├5月 ├4月 ├3月 ├2月 ├1月 icon2020年 ├12月 ├11月 ├10月 ├9月 ├8月 ├7月 ├6月 ├5月 ├4月 ├3月 ├2月 ├1月 icon2019年 ├12月 ├11月 ├10月 ├9月 ├8月 ├7月 ├6月 ├5月 ├4月 ├3月 ├2月 ├1月 icon2018年 ├12月 ├11月 ├10月 ├9月 ├8月 ├7月 ├6月 ├5月

  • Haskellの関数の適用や合成をどうイメージしていますか? - Qiita

    プログラミングHaskellなどを読んで、小さなコードは頭では分かるようになったのですが、大きなコードを読んだり自分で設計する際に、どのように関数の適用や合成などをイメージしたり図として表したらいいか分からず悩んでおります。 具体的には、f(x,y,z) = z*(x+y) という関数が表現したい場合、 (*) :: Num a => a->a->a (+) :: Num a => a->a->a f1 x y z = z * (x + y) f2 x y = (*) $ (+) x y f3 x = (*) . (+) x

    Haskellの関数の適用や合成をどうイメージしていますか? - Qiita
  • Amazon.co.jp: モナドロジー・形而上学叙説 (中公クラシックス): ライプニッツ (著), 富雄,清水 (翻訳), 勝久,飯塚 (翻訳), 篤司,竹田 (翻訳), Leibniz,Gottfried Wilhelm (原名): 本

    Amazon.co.jp: モナドロジー・形而上学叙説 (中公クラシックス): ライプニッツ (著), 富雄,清水 (翻訳), 勝久,飯塚 (翻訳), 篤司,竹田 (翻訳), Leibniz,Gottfried Wilhelm (原名): 本