07/10/24 10:25:49
F#はじめました。クロージャもどきを作ってみましたが、
let rec makeclr v n =
let pr n = printf "closure %d\n" n in
if n < 1 then v else (fun () -> pr(n)) :: (makeclr v (n - 1))
let makecl = makeclr [] ;;
let v = makecl 10 in
List.iter (fun x -> x()) v ;;
リストの後方に追加するスマートな方法があったら教えてください。
逆にしたら怒られた。
(makeclr v (n - 1)) :: (fun () -> pr(n))