Island Life

< 駒小 | テスト >

2008/01/10

Pythonでモナド

Monads in Python (with nice syntax!):

デコレータとジェネレータを使ってる。 WiLiKi:Scheme:ExplicitMonadで考えたように、 動的型言語でモナドを書く場合の困難はreturnを多相にするところ (具体的にどのreturnを使えば良いかが、引数でなく呼び出し側が期待している 返り値の型に依存すること)だ。 このアイディアではモナドのreturnで例外を投げて、 デコレータ中で例外を捕捉してその時点でアクティブなモナドの unitメソッドを起動するというふうにしている。 実行時に有効なモナドをトラックするという原理はWiLiKi:Scheme:ExplicitMonadと同じだ。

しかしモナド演算に入る度にtryブロックを作って、returnの度に例外を 投げるんで性能は大丈夫なんだろうか。Pythonだと例外処理と捕捉は 軽いのかなあ。

Tags: Programming, Python, Scheme