2012-03-07 16 views
8

Trạng thái hiện tại của việc thực hiện tối ưu hóa cuộc gọi đuôi (TCO) trên Mono (2.11) là gì? Đọc ở đâu đó rằng tất cả các codebase sẽ cần được sửa đổi để sử dụng một quy ước callee-pops-arguments. Tình trạng của sự thay đổi này là gì? Là cổng ARM/Linux cập nhật về vấn đề này?Trạng thái hiện tại của tối ưu hóa cuộc gọi đuôi cho F # trên Mono (2.11) là gì?

Cảm ơn!

+2

Tôi nghĩ bạn có thể muốn thay đổi tiêu đề câu hỏi của mình - F # trong các tác phẩm chung trên Mono. Bạn đang hỏi về một tính năng của F # - một tính năng quan trọng mà tôi cấp nhưng vẫn chỉ là một phần của F #. –

+0

Tôi đã có một chương trình kết hợp trình phân tích cú pháp hoạt động trên .NET và không thành công trên Mono 2.10.8. Sẽ cố gắng để kiểm tra trên 2,11 ngay – t0yv0

Trả lời

3

Tail cuộc gọi chắc chắn làm việc trên mono trên linux - thử nghiệm sử dụng

let rec f a = f (a+1) 

mà không sụp đổ - thử nghiệm trên Mono 2.10.2

CẬP NHẬT

Thử nghiệm với liên kết từ Brian - https://bugzilla.novell.com/show_bug.cgi?id=476785

treo trên Mono 2.10.2 mặc dù tạo ra .tail hướng dẫn

+1

Trình biên dịch F # chuyển đổi đệ quy trực tiếp thành một vòng lặp. Sử dụng hai hàm đệ quy lẫn nhau để kiểm tra. – Brian

+0

@Brian - đã kiểm tra giải trình - bạn là chính xác, bạn có một chương trình ví dụ điển hình tạo ra các hướng dẫn '.tail' –

+1

@JohnPalmer: Thử [ví dụ này] (https://bugzilla.novell.com/show_bug.cgi? id = 476785). Tôi không nghĩ rằng nó đã được sửa trong Mono 2.10. – pad