タグ

モナドに関するharry0000のブックマーク (15)

  • 【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。 - Qiita

    プログラミング言語が2-圏として考えられるということについてソースから訳出した。(2023.2.22) 動機 最近、chatGPTにいろいろ尋ねるのが流行っているらしい。Haskellで有名なモナドの概念がなぜ導入されたか尋ねている人を見かけて、そういやそういう記事見たことないなと思ったので適当に調べた。 一次ソース 元ネタは以下のマイナーだと思われる文献 An abstract view of programming languages Eugenio Moggi教授のあんま読まれてない方の論文 Denotational Semantics Peter D. Mosses教授のこの論文(2部あって後半の方) 邦訳があり邦訳で読んだ。 プログラミングのモナド発見の経緯 プログラミングのモナドはなんか包んだり抜き出したり見たいな感じの概念で知られてますが、プログラミングの概念をモジュール化す

    【追記あり】ChatGPTじゃなくて人力でモナドが発明された経緯を適当に調べた(ソース付き)。 - Qiita
  • Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog

    paild 社でお手伝いをしている yuki です。前回に引き続き Dependency Injection 略して DI の話題を書いていきたいと思います。今回は Rust における DI についていろいろと考えてみました。今回紹介する実装はかなり単純な例を用いたもので、この記事からさらにみなさんのアプリケーションの実装状況に合わせていくつか工夫は必要になるかもしれません。ただ、とっかかりとしては十分なものになっていると思うので、DI でお困りの方はぜひ参考にしてみてください。 今回実装したいアプリケーションのお題について 今回紹介する技法の種別について コンストラクタインジェクション 静的ディスパッチを用いたもの 動的ディスパッチを用いたもの 静的ディスパッチと動的ディスパッチの利点・欠点 shaku (DI コンテナ)を用いたインジェクション shaku の利点・欠点 余談: DI

    Rust の DI を考える –– Part 2: Rust における DI の手法の整理 - paild tech blog
  • eff ドキュメント日本語訳

    Extensible effects は、モナドトランスフォーマーに代わるもののひとつで、作用(エフェクト)のある計算を関数的な方法で行うためのものだ。このライブラリは、Oleg Kiselyov の論文 Freer monads, more extensible effects で述べられた、"free-er" モナドと "open union" のエフェクトに基づいている。 次の章立てで詳しく学べる。eff について何もかも初めてなら、順番に読んでいくことを推奨する。 インストールとインポート 初めてのエフェクト eff における一般的なエフェクト: Reader, Writer, Eval, State,… チュートリアル 自分のエフェクトを作ってみる エフェクトのスタックを解釈し、処理する メンバー implicits を使う アプリカティブ評価を使う ヒントとコツ コミュニティの

    eff ドキュメント日本語訳
  • Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself

    この記事は言語実装Advent Calendar 2020 25日目の記事です。(2022-11-06: 記事の内容を追記していますが、この記事の結論としては「似たようなものは作れるが、完全体にはならない」です) 前提知識 高階カインド型 モナド 従来のエミュレーション方法 Generic Associated Types を用いたエミュレーション(new!) 型クラスを定義する Functor を用意する Pointed を用意する Applicative を用意する Monad を用意する いくつか型を実装していく 現状実装できないもの do 記法 Generic Associated Types(GATs)とは何か 追記(2022-11-06) リポジトリ 参考文献 モナドに関する話題が言語実装アドベントカレンダーの範疇に入るのかわかっていませんが*1、プログラミング言語がお好きな方

    Rustでもモナドは実装できるのか?(再) - Don't Repeat Yourself
    harry0000
    harry0000 2020/12/26
    モッ
  • Loan パターンのネストは継続モナドでシュッと解決できるよという話 - Qiita

    先日見かけた Closeモナド についての言及になります この記事の概要 長くなりそうなので最初にまとめです Close モナドにはいくつかの問題があります それらの問題は既存の継続モナドによって解決できます リソース管理のために新たなモナドを考案する必要はありません Close モナドが抱える問題 動作の問題 run を二回以上呼べません リソースがインスタンス変数として保持されているためです 言い換えると map や flatMap 自体に副作用があります コードの問題 Close[R, A] の A にアクセスするための手段が map しかありません 副作用が目的の処理であっても map が必要になってしまいます クラス内にリソースを閉じるための try-finally が二回書かれています DRY に書きたいですね 継続モナドの導入 まずは最も簡潔な(と思われる)実装を先に載せてお

    Loan パターンのネストは継続モナドでシュッと解決できるよという話 - Qiita
  • ソフトウェアエンジニアとしてモナドを完全に理解する / make-perfect-sense-of-monad

    モナドを完全に理解する

    ソフトウェアエンジニアとしてモナドを完全に理解する / make-perfect-sense-of-monad
  • Scala における継続モナドの実装と活用

    Scala秋祭り」の登壇資料 https://scala-aki-matsuri.connpass.com/event/142817/ - v1.0.0 に更新 - v0.1.0 をアップロード

    Scala における継続モナドの実装と活用
  • モナドから始めない継続入門 - TOKYO OYASUMI CLUB

    Twitterのどこかで「Contモナドを使わない継続の説明を書いてくれ」みたいな話を目にしたので書きました. この記事は,以下のような方を対象に書かれています. Haskellはなんとなく使える.モナドもなんとなくわかる. 息をするように新しいモナドを定義したりはできない. 継続が何かは全く分からない.Schemeとかを使ったこともない. 継続とは Haskell(に限らずほとんどの言語)では,以下のようなステップでプログラムを実行していきます. 何らかの関数に引数を与えて,その計算結果を受け取る. 受け取った計算結果を別な関数の引数に与える. 以下繰り返し. 例えばHaskellで,与えられた3つの数の平均を取る関数を(非常に冗長に)書いてみると,以下のようになるでしょう. module Cont where import Prelude hiding (div) add :: Num

    モナドから始めない継続入門 - TOKYO OYASUMI CLUB
  • MonadTransformer とは何か

    index.md MonadTransformer とは何か 注意書き この記事は Monad がわかる人に向けた MonadTransformer の解説記事です。 すごいHや FP in Scala などでモナドまではイメージが掴めたけれど、モナドトランスフォーマーが何かわからない、という層をターゲットに想定しています。 基的に Functor, Applicative, Monad および型クラスについては把握しているものとしますので、この辺があやふやな方は別の資料などをご参照下さい。 サンプルコードとして Scala を利用します。ただし、説明の都合上、高階型引数について kind-projector の ? を用いた表記を使います。 例えば List[A] 型のモナドインスタンスは通常 Monad[List] 型として表しますが、この資料では Monad[List[?]] と

    MonadTransformer とは何か
  • 継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita

    継続モナドを使ってPlay FrameworkのActionを作るという話をします。 Play FrameworkはScalaのWebアプリケーションフレームワークであり、Actionはそのコントローラー部分になります。 この記事を読むにあたって継続モナドの知識は前提としませんが、 ある程度のモナドの知識(Scalaのfor構文の使い方、ScalaのモナドがflatMapメソッドで合成できることなど) Play Frameworkの使い方(PlayのActionがどのようなものであるかなど) などの知識は前提とし、説明を省略させていただきます。 話の流れとしては以下のようになります。 コントローラーで継続モナドを使いたい動機 継続モナドとは? なぜコントローラーで継続モナドを使うと便利なのか? 継続モナドとFutureを組み合わせることでエラー処理を整理する 継続モナドを使ったAction

    継続モナドを使ってWebアプリケーションのコントローラーを自由自在に組み立てる - Qiita
  • 絶対に理解出来ないモナドチュートリアル - konn-san.com

    世の中には、恐しい数のモナドチュートリアルがあって、それぞれモナドは象だとか、いや接ぎ木だ とか、プログラマブル・コンテナだとか、プログラム可能なセミコロンだとか、色々な説明がなされている。「モナド チュートリアル」で検索すれば、他にも色々に絵解きされた有象無象のモナドが大量に引っ掛かる。そうそう、モナドは単なる自己関手の圏におけるモノイド対象だよ。何か問題でも?なんてのもあったな。 この記事の目的は別に、こうした既存のモナドチュートリアルを「間違ってる!」とか「わかるわけねーよ!」といって貶そうという訳ではない。実際、既に幾多書かれているチュートリアルの中でも、僕の云いたいことと殆んど同じようなことが書かれているものは沢山ある。 では、上の膨大なリストの末尾にまた一つ「わかりやすい比喩」を付け足そうというのか?というとそういう訳でもない。そうそう、モナドは比喩ではないというチュートリアル

  • All About Monads モナドのすべて

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

  • モナドはメタファーではない · eed3si9n

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

  • TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)

    2008年に書いた記事「CPS(継続渡し方式)変換をJavaScriptで説明してみるべ、ナーニ、たいしたことねーべよ」はCPSの説明にJavaScriptを使っています。しかし、JavaScriptでは型宣言や型総称(ジェネリックス)が使えないので、「未来のJavaScript」という最初の節で架空のJavaScript方言を定義しました。最近のAltJSのなかには、当時の「架空のJavaScript方言」の機能を実現したものがあります。そのなかでも、TypeScritは強力な型システムを持っています。2015年に現存するJavaScript風言語であるTypeScriptで、関手やモナドがうまく書けるかどうか探ってみます。 内容: 圏論とプログラミング言語 TypeScriptの型の書き方 お題はリストモナド モナドの乗法と単位、全体のまとまり 追記: TypeScriptに関する補足

    TypeScriptと関手やモナドなど - 檜山正幸のキマイラ飼育記 (はてなBlog)
  • 1