やっぱり動的言語では安全なソフトは作れない 4
■ このスレッドは過去ログ倉庫に格納されています
0358デフォルトの名無しさん
2011/09/24(土) 22:29:40.88破壊的代入を使わずに処理と状態を持ち回るため(破壊的代入は可能なら避けたい)、
let rec cps f init x =
let y = f init x in `T (y, cps f y)
let f = cps (fun x y -> なにかの処理) init
のような関数を定義したり、この関数をネットワーク越しにsend/receiveしたりする
で、型を書くとこんな感じ(あれ?意外と読めるw)
let rec cps (f : 'a -> 'b -> 'a) (init : 'a) (x : 'b) : [> `T of 'a * 'c ] =
let (y : 'a) = f init x in `T (y, cps f y)
let (f : 'a -> [> `T of 'a * 'b ] as 'b) = cps ((fun x y -> なにかの処理) : 'a -> 'c -> 'a) init
■ このスレッドは過去ログ倉庫に格納されています