読者です 読者をやめる 読者になる 読者になる

北海道苫小牧市出身の初老PGが書くブログ

永遠のプログラマを夢見る、苫小牧市出身のおじさんのちらしの裏

monad

Stateモナドとオブジェクト

面白くもなんともないParsonオブジェクト。 package Parson; sub new { my ($class, $self) = @_; bless $self => $class; } sub change_name { my ($self, $name) = @_; $self->{name} = $name; } sub get_name { my ($self) = @_; $self->{name}; } my $p …

第15回FormalMethods勉強会に行ってきた

Coqのお勉強をしたくて出席してきました! 非常〜にわかりやすいチュートリアルで、おかげさまで概要がわかるようになりました。やはりこういう抽象的な内容は、文章より実際にレクチャーして頂いた方が掴みやすいですね。

モナドのdo記法をPerlのCoroで実装してみた

先に言っときますが、決して役に立つエントリではないので圏論やコルーチンみたいなものに興味がある人だけどうぞwPythonにおけるHaskellチックなdo記法をジェネレータで実装する方法に心惹かれたので、Perlで真似してみました。ジェネレータはコルーチン的…

jQueryは本当にモナドだった

タイトルはかなり釣りです:-) まあ、間違えているかもしれないので内容の判断は自己責任で。さて、元ネタはこちらなのですが、独自のモナド節を唱えていて非常に怪しい。と言うことで、怪しくならないように真面目に解説してみます。ちなみに、このエントリ…

図でわかる(?)モナド おまけ: 図からコードを書く

最後に出した例ですが、 module Main where main :: IO () main = getLine >>= putStrLn . reverse モナドで悟りをひらきたいのなら - 図でわかる(?)モナド さきほどのエントリの図が全部わかれば、以下のような図も書けますね。reverseをfmapで持ち上げて橋…

モナドで悟りをひらきたいのなら - 図でわかる(?)モナド

圏論の最大の武器はダイアグラムなので、モナドで悟りをひらきたいのならダイアグラムを使えばいいんじゃないでしょうか。 ダイアグラムの書き方 例えば、「 f :: a -> b 」とか「length :: [a] -> Int」は以下のように書きます。型を点で、関数を矢印で書き…

モニャドセミナー4

モニャドセミナー4行ってきました。懇親会は体調不良でドタキャンでした*1、すみません。 コモノイド デュアル→射を逆に→2項演算も逆になる(写像にならない)、と端的に捉えて疑問に思ってしまったのですが、要は定義となるモナド風な可換図式*2の矢印を逆に…

モニャドセミナー3 お疲れ様でした

モニャドセミナー3に行ってきました。破壊的代入と単一代入をモノイドと見なせるってのは意外な発見でした。こういう例は非常に面白いです。最後に一気に解説があった"スタンピング"については、CATEGORY THEORY FOR COMPUTING SCIENCEのP365に Representati…

Perlでモナドを学ぶ - IOモナド編

ListモナドとMaybeモナドに続いて、今日はIOモナドのお勉強をしてみます。 簡単な解説 IOモナドは実質的にStateモナドなので、こちらとかこちらとかを読んで下さい。ただし、状態は「世界」となります。世界によって値は異なり、新しい世界(副作用が施された…

Perlでモナドを学ぶ - Maybeモナド編

Maybeモナドの実装です。 簡単な解説 Maybeモナドの関手のT_objectは、渡された集合に対して、すべてをリファレンス化した集合にundefを加えたものに移します。こうすることによって、元々持っていた値を全て表現すると同時に新しいundefと言う値を手に入れ…

Perlでモナドを学ぶ

勉強のためにPerlでモナドを実装してみました。 免責 圏論のモナドの概念をPerlでシミュレートしようと言うエントリであって、モナドを開発にどう利用するかなどについてはびっくりするくらい言及しませんので悪しからず。

Stateモナドを今度こそ理解する(3)

さらに前回の続きです。これで最後。Stateモナドにおける >>= の説明と、関数的なイメージを解説したつもりなのですが・・・。うーん、こりゃあ説明の仕方がとてもよくないですね(汗。解説に関して、もっとわかりやすいようにリベンジした方がいいかもしれま…

Stateモナドを今度こそ理解する(2)

前回の続きです。2回で終われませんでしたorz今回は、Stateモナドの値の説明と、returnの定義です。モナド=Stateモナドとか、モナド=IOモナドなどと思うのは危険です。「Stateモナドは、モナドインタフェースの実装例」くらいに解釈するのがいいと思います。

Stateモナドを今度こそ理解する

3年前に理解しようとして惨敗した*1HaskellのStateモナドの解説に、リベンジしようと思います。圏論をちょっとはかじったので、今度こそまともな解説ができるはず。と言うことで、今回は前編です。圏論の知識は前提とはしてないですが、集合と写像にアレルギ…