LoginSignup
10
10

More than 5 years have passed since last update.

cleanは副作用を扱うのにIOモナドを使っていない

Posted at

さっきのコード見ると分かるけど、Clean は純粋関数型言語なんだけど、IOモナドは使っていない。 World -> *World の「」がミソで、一意型というのを使って副作用を安全に扱えるようにしている。http://d.hatena.ne.jp/quox/20080809/p4 の2chからのコピペの説明が一番簡潔な気がする。

そもそもIOを扱うって目的だけならIOモナドは要らなくて、World型を何らかの形で可視化して矛盾なく扱えれば十分なはず。Haskellでモナドを使ってあり難いのは、IO型のコンビネータとしてモナドが優れているってだけの話じゃないかな。確かAllowでもIO型は表現できた記憶があるし。ってのが素人目で見た(かなりいい加減な)感想。

参考

ググってもいい資料見つけにくかったのでメモ。いずれも書かれた時期が古いかも。

10
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
10