関数型プログラミング言語Haskell
■ このスレッドは過去ログ倉庫に格納されています
0518デフォルトの名無しさん
NGNGあー、そうか。
ええっと、
do
c1<-getChar
c2<-getChar
と
let (c1, w1) = (getChar w0)
in
let (c2, w2) = (getChar w1)
in
...
が「同じだ」と言ってるわけではないぞ。
do
c1<-getChar
c2<-getChar
で「コマンド列」というlazy listが作られる。
このときにはまだwを引数にして呼び出したりしないし、
副作用も起きない。
そのコマンドを1個1個呼び出していくプログラムはシステム側にある。
Cの例で言えば、Robotがlazy listをたぐりながらコマンドを1つずつ
得て、コマンドを実行していく。その過程では当然副作用が起きる。
でも、>>501 で書いたCのプログラムでコマンド列を作っている部分
には副作用なんかないだろ?
■ このスレッドは過去ログ倉庫に格納されています