Gần đây tôi đã được đưa ra mãOCaml - Loại không hợp lệ là gì?
List.fold_left (fun acc x -> raise x ; acc) 3
Tôi hoàn toàn tốt với ứng dụng này một phần có giá trị chức năng của> danh sách loại exn -> int, và thực tế nó mang lại một cảnh báo là không đáng ngạc nhiên . Tôi,> Tuy nhiên, không chắc chắn những gì một nửa số cảnh báo có nghĩa là:
Warning 21: this statement never returns (or has an unsound type.)
tôi không thể thực sự tìm thấy bất kỳ tham chiếu đến cảnh báo này, nơi nó không phải là kết quả của một tuyên bố không trở về. Ngay cả trang man dành cho ocamlc cũng chỉ đề cập đến các câu lệnh không trả về cho cảnh báo này, và warnings.ml đề cập đến nó chỉ là Nonreturning_statement.
Tôi quen thuộc với khái niệm về âm thanh vì nó liên quan đến các hệ thống kiểu, nhưng ý tưởng về một loại bản thân vốn dĩ chưa được coi là lạ đối với tôi.
Vì vậy, câu hỏi của tôi là:
Chính xác thì loại nào là không hợp lệ? Tình huống trong đó một loại không hợp lệ sẽ phát sinh khi OCaml sẽ chỉ đưa ra cảnh báo thay vì thất bại hoàn toàn là gì?
Ai đó đã đăng câu hỏi này và khi tôi đang viết câu trả lời, câu hỏi đã bị xóa. Tôi tin rằng câu hỏi này rất thú vị và đáng để đăng ký lại. Vui lòng xem xét bạn có thể có một người sẵn sàng giúp đỡ bạn :-(
Tôi tin rằng câu hỏi đã bị xóa vì nó là bản sao của http://stackoverflow.com/questions/31278561/avoid-the-warning-warning-21-this-statement-never-returns-or-has-an -unsound-t, nơi cảnh báo được gây ra bởi việc sử dụng một hàm ngoài (js_of_ocaml) với kiểu kết quả không bị giới hạn - như trong câu trả lời của bạn bên dưới. Tôi nghi ngờ người hỏi là người vừa đưa cho tôi một +1 về câu trả lời được chấp nhận. Cấp, trọng tâm có một chút khác biệt. – antron
Tôi là người đã hỏi/xóa điều đó; Tôi chỉ mới phát hiện (hehe) cái này. Những gì @antron nói chính xác là tại sao tôi đã xóa nó. Và vâng, +1 đó là của tôi. ;) – Will