ようこそ。睡眠不足なプログラマのチラ裏です。

モナド

ステップアップでわかるコンピュテーション式。TryWith や TryFinally などの実装にぜひ活用したい Delayと Run

全国1億2千万人の F# ファンの皆様いかがお過ごしでしょうか。理解できるわけもないとわかっていながらも調子に乗って「型システム入門 プログラミング言語と型の理論」を買ってしまった系の痛いおじさんです。10年後、20年後にわかることができてたら…

すごいH本の素朴な確率モナド

年末年始の連休から中五日あっての三連休で、正月ボケをぶり返してしまいそうな今日この頃ですが、いかがお過ごしでしょうか。 すごいH本こと、書籍「すごいHaskellたのしく学ぼう!」の最後のほう、第14章「もうちょっとだけモナド」の 14.8 (P356)にて、…

圏論でアハ体験

もう1週間以上前になりますが、Code2012という合宿イベントに参加してきました。いろいろな方との交流あり、温泉あり、クラウディアさんありと大変楽しかったので、ぜひ来年も参加したいです。 で、VBerのくせにそちらで「5分じゃわからないモナド - 圏論な…

F#で shift/reset プログラミング。限定継続(風)モナドで四天王問題を解く。

発売されてすぐにPSVitaのP4Gをダウンロードしたのだが、どちらかというとエヴィディ・ヤングライフ・VB6♪な生活を送っていてなかなかプレイする暇がなくてつらい。今日はGoAzureのゆーすと見たり、この記事をこしらえていたりな休日を過ごしていましたが、…

F#で簡素なモゲマスコンプガチャシミュレータ

椎名林檎「自由へ道連れ」をヘビロテしすぎて脳内無限ループしている今日この頃ですが、皆様いかがお過ごしでしょうか。 時事ネタとしては旬を逃した感じですが、簡素なコンプガチャシミュレータをF#で書いてみました。 とは言っても、この記事で伝えたいこ…

Retry Monad for Transient Fault Handling (Topaz + FSharpx)

4月14日に札幌で行われた第69回CLR/H勉強会にて、「Retry Monad for Transient Fault Handling - F#とWindows Azure と私 -」と題して、ライトニングトークで発表しました。 Retry monad for transient fault handling View more presentations from zecl123…

F#で順列(Permutation)と組み合わせ(Combination)。YOU、Listモナドしちゃいなよ。集合モナドもあるよ。

以前、C#で順列(Permutation)と組み合わせ(Combination)をすべて列挙してみようという記事を書きました。 今見ると、前に思っていた以上に「しょっぱいなぁ」と思わざるを得ませんが、C#で書き直すつもりになれません。 今回は、超イケてる言語のF#で書きま…

FizzBuzz問題から学ぶモナド

前回のエントリでモナドについて熱く語りました。今回はゆるいモナドの雑記です。 モナドを利用してFizzBuzz問題を書いてみることで、「モナドってなんなん?なにしてくれちゃってるん?」ということが、 もしかしたら分かるかもしれないよ、という息抜き的…

快刀乱麻を断つモナド - F#とIOモナドとコンピューテーション式の奥義と

,. -‐'''''""¨¨¨ヽ (.___,,,... -ァァフ| あ…ありのまま 今 起こった事を話すぜ! |i i| }! }} //| |l、{ j} /,,ィ//| 『F#でIOモナドっぽい何かを作ろうとしていたら、 i|:!ヾ、_ノ/ u {:}//ヘ いつのまにか、全然別モノのLazyモナドをつくっていた。』 |リ u'…

F#で楽々breakとcontinue。継続モナドまじパネぇっす!

id:einblickerさんが、「F#で継続モナド - einblickerの日記」というステキな記事を書いてくださいました。グッジョブすぎる! 以前、F#で継続渡し形式(CPS)変換を抽象的に考えてみたら、それってつまりHaskellの継続モナドみたいなものでした。ということで…

Observableコンピューテーション式はモナド則を満たしているか否か。

前回のエントリ「F#でRxる。よく訓練されたF#erはコンピューテーション式をつくる。」で紹介いたしました、 Observableコンピューテーション式について補足します。モナド則を満たしているか否かについてです。 Haskellにおいて、モナドがモナド則を満たして…

モナディックなパーサ・コンビネータFParsecを使おう。てゆうかParsec(Haskell)のApplicativeスタイルがやばい。

Parsec(Haskell)のApplicativeスタイルがやばすぎるので、FParsecでApplicativeスタイルしてみた。 FParsecとはFParsec とは Haskell のパーサ・コンビネータライブラリ Parsec をF#に移植したものです*1。 では、パーサ・コンビネータとはなんでしょうか。…

F#で継続渡し形式(CPS)変換を抽象的に考えてみたら、それってつまりHaskellの継続モナドみたいなものでした。ということで継続ワークフロー(簡易版)作った。

[前置き] 継続とはプログラミングにおいて「継続」とは、ある計算のある時点における「残りの計算」を表す概念のこと。 つまり、ある計算過程の瞬間におけるその過程の未来全体を表すものを意味する。 プログラミング言語で継続を扱う機能を導入すると、ユー…