リストの要素を数え、ルールに従い、アキュムレータを使用する末尾再帰関数を実行しようとしましたが、実行すると次のようになります。
lstcountr [1..98765432];;
私はこれを得る:
System.OutOfMemoryException: タイプ 'System.OutOfMemoryException' の例外がスローされました。
これは私の関数です(末尾再帰的/効率的だと思いました):
let lstcountr ls =
let rec loop ls total =
match ls with
| [] -> total
| hd::tl -> loop tl total+1I
loop ls 0I
これはもっとうまくできますか?