From: shelarcy <shelarcy / capella.freemail.ne.jp>
Subject: [haskell-jp:345] Re: モナドって?
Date: Sun, 09 May 2004 10:22:58 +0900

> On Sat, 08 May 2004 18:13:09 +0900 (JST), Nobuo Yamashita 
> <nobsun / sampou.org> wrote:
> >> 「Schemeで言えば」ということなら、OlegさんがSchemeでのモナドの
> >> 実装例を示してくれています。
> >> http://okmij.org/ftp/Scheme/monad-in-Scheme.html
> >
> > あっ。こんなのがあったんだ。
> 
> shiro さんが前に示していた、SRFI-53: Syntactic computations with
> computation-rules の文脈で出てきたぶんしょうなのではないでしょう
> か?
> 
> http://srfi.schemers.org/srfi-53/srfi-53.html

srfi-53には確かに「Oleg氏の仕事を基礎にしている」とありますが、それは
彼のcontinuation passing style macroのテクニックを使っているからでしょう。

私が挙げたmonad-in-Schemeの方はSchemeのランタイムでmonadを実現
する話です。一方、srfi-53はR5RSマクロでmonadicなtransformation
を実装する話なので、レイヤーがちょっと違いますね。

CPS macroによってR5RSはturing completeであることが示されましたが、
CPS macroを使ったプログラミングはC++のテンプレートプログラミングと
似たようなもので、パズル的な面白さはありますが実用に供しようとすると
全然tractableでないのが問題になります。srfi-53はCPS macroをmonad
で包んで使い易くしようという試みにも見えますが、たぶんどっか間違えた
時にどこを直せば良いのか全然わからない、ってなりそうな予感。

--shiro



--
ML: haskell-jp / quickml.com
使い方: http://QuickML.com/