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))