07/10/24 14:37:10
>>117
ありがとう。最後にまとめて反転させたほうが早いわけですね。
末尾再帰になってなかったのでそうしたら反転の必要もなくなりました。
最初はforやwhileを使ってたのですがなんだかうまくないようです。
あまりforやwhileは使わないのでしょうか。配列専用の機能のように思えました。
let rec makeclr v n =
if n < 1 then v else makeclr ((fun () -> printf "closure %d\n" n) :: v) (n - 1)
let makecl = makeclr [] ;;
let v = makecl 10 in List.iter (fun x -> x()) v ;;