Real-World Functional Programming numaralı kitapta çalışıyorum ve kitabın örneğini okumadan önce kendi kuyruğumu özüme getirmeye çalıştım (listeleme 10.2, s. 265). Kitabın örnek çalışmaları; benimki bir yığın taşmasına neden oluyor.Bu kuyruk neden yinelenmiyor?
Bir tuple argümanı veya a + accum
ön hesaplamasını kullanıp kullanmadığımı buldum, sonra benimki işe yarayacak. Nedenini anlamak istiyorum. Bu (sum2 b a) + accum
değil sum2 b (a + accum)
olarak ayrıştırılır olduğunu
let rnd = new System.Random()
let test2 = List.init 1000000 (fun _ -> rnd.Next(-50, 51))
let rec sum2 list accum =
match list with
| [] -> accum
| a::b -> sum2 b a + accum
let result = sum2 test2 0
printfn "%d" result
Aaargh yerine
okuyor! Siz ve @ sepp2k sizsiniz. Değerlendirme sırası. Parantez bunu düzeltir. – TrueWillGenellikle herşeyi parantez içinde bırakıyorum, daha az kötülük olduğunu keşfettim. Yay ortak lisp !!! – gpeche