Я попытался выполнить хвостовую рекурсивную функцию, которая будет подсчитывать элементы списка, следовал правилам, использовал накопитель, но когда я запускаю ее так:
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
это можно сделать лучше?
seq<_>
может выглядеть примерно так:let count = Seq.fold (fun i _ -> i + 1I) 0I
- person Daniel   schedule 25.04.2012