Tôi muốn xem hướng dẫn .tail
IL, nhưng các hàm đệ quy đơn giản sử dụng các cuộc gọi đuôi mà tôi đã viết rõ ràng được tối ưu hóa thành các vòng lặp. Tôi thực sự đoán về điều này, vì tôi không hoàn toàn chắc chắn những gì một vòng lặp trông giống như trong Reflector. Tôi chắc chắn không thấy bất kỳ mã số .tail
nào. Tôi đã "Tạo cuộc gọi đuôi" kiểm tra trong tài sản của dự án của tôi. Tôi cũng đã thử cả bản dựng Debug và Release trong Reflector.Mã F # đơn giản nào tạo ra lệnh .tail IL?
Code tôi sử dụng là từ Programming F# by Chris Smith, trang 190:
let factorial x =
// Keep track of both x and an accumulator value (acc)
let rec tailRecursiveFactorial x acc =
if x <= 1 then
acc
else
tailRecursiveFactorial (x - 1) (acc * x)
tailRecursiveFactorial x 1
bất cứ ai có thể đề xuất một số F # mã đơn giản mà thực sự sẽ tạo ra .tail
?
Tôi đã kiểm tra ngay bây giờ. Vâng! nó tạo ra đuôi. –