State モナドの代わりに Reader モナドを使う

Posted on 木 30 1月 2020 in プログラミング • Tagged with Haskell, GHC, モナド

注意
この記事は公開当時主張に誤りを含んでいたため,大幅に書き直しています.また,公開当時の主張の誤りについても,付録として載せておきました.

Haskell で State モナドはモナドの代表格だ.Haskell 入門者は,多くの場合,状態を伴った計算を State モナドで書くことを習うだろう.しかし,実用上の多くの場面では,State モナドではなく他の選択肢を選んだ方がいい場合がある.一つの選択肢が,Reader モナドと可変参照を使う方法だ.今回は,この手法を使う利点と利用場面について考えていこうと思う …


Continue reading

graded monad から monad への埋め込み

Posted on 木 13 6月 2019 in 数学 • Tagged with エフェクトシステム, モナド, 圏論

graded monad から monad への埋め込みについて,考えたので,その覚書.

エフェクトシステムを monad で近似する

エフェクトシステムによって,静的型情報をより詳細にできるわけだが,実行機械を作る時にはこのエフェクト情報を特に使わない実行方法が得られる場合が多い.もし, graded monad による言語を monad による言語に近似できれば, graded monad 用の実行方法をわざわざ作らなくても, monad の実行方法を流用できる.

では …


Continue reading

Scala (Dotty) での Graded Monad によるメタ言語の実装

Posted on 金 07 6月 2019 in 構想 • Tagged with エフェクトシステム, モナド, Scala

Graded Monad のメタ言語,普通にプログラミング言語で実装できそうやなって思って,ちょっとやってみることにした.で,前ねこはるさんが extensible effects に Dotty の union types 使う話してたの思い出して,それと同じ感じで powerset による preordered monoid に対する graded monad ぐらいなら実装できるんじゃねと思ったので, Dotty …


Continue reading

Graded Monad とエフェクト

Posted on 木 06 6月 2019 in 数学 • Tagged with 圏論, エフェクトシステム, モナド, プログラム意味論

graded monad について聞きかじって,色々調べたのでそのメモ. graded monad はエフェクトシステムの categorical semantics 作るときに使われてるらしい.エフェクトシステム勉強会でも話があったやつ.

モナドとエフェクト

まず基本的なやつから.以下の構造は一対一の対応を持つ.

クライスリトリプル (Kleisli triple)

CC 上のクライスリトリプルとは,以下の要素の組 (T,η …


Continue reading