Concurrent Clean : アキュームレータ
[id:sumim:20060327:p1]のコメント欄で、代入の件で勘違いした件について、そういう時は、Cleanはどう書くのかを考えてみました。
Start w = w --> stdio --> \(f,w) = f --> printAc 1 --> flip fclose w --> snd printAc n f = f --> (n --> (+) 2 --> (+) 3 --> (+) 5 --> (+) -10 --> fwritei) --> fwrites "\n"
これで用は足りるかな?
計算途中で出力をしたい場合はこうかな?
printAc n f = (n,f) --> ac 2 --> fwriteiln --> ac 3 --> fwriteiln --> ac 5 --> fwriteiln --> ac -10 --> fwriteiln --> return where ac i (n,f) = (i+n,f) fwriteiln (i,f) = (i, f --> fwritei i --> fwrites "\n") return (_,f) = f