Недавно я получил кодOCaml - Что такое плохой тип?
List.fold_left (fun acc x -> raise x ; acc) 3
Я совершенно нормально с этим частичным применением имеющего функциональное значение> Тип списка EXN -> Int, а также тот факт, что дает предупреждение не удивительно, , Я,> однако, не уверен, что половина предупреждения означает:
Warning 21: this statement never returns (or has an unsound type.)
Я не могу реально найти любую ссылку на это предупреждение, когда это не является результатом невозвращающихся заявления. Даже man-страница для ocamlc упоминает не возвращающие утверждения для этого предупреждения, а warnings.ml относится к ней просто как Nonreturning_statement.
Я знаком с понятием прочности, поскольку он относится к системам типов, но идея самого типа, являющегося неотъемлемо необоснованной, кажется мне странной.
Так что мои вопросы:
Что именно необоснованный тип? Какова ситуация, когда возникнет несоответствующий тип, когда OCaml только выдаст предупреждение, а не сильно сработает?
Кто-то разместил этот вопрос, и пока я писал ответ, он был удален. Я считаю, что этот вопрос очень интересен и заслуживает повторной передачи. Пожалуйста, обратите внимание, вы можете иметь кого-то, кто готов помочь вам :-(
Я считаю, что вопрос был удален, потому что это был дубликат http://stackoverflow.com/questions/31278561/avoid-the-warning-warning-21-this-statement-never-returns-or-has-an -unsound-t, где предупреждение было вызвано использованием внешней (js_of_ocaml) функции с неограниченным типом результата - как в вашем ответе ниже. Я подозреваю, что вопросник тот, кто просто дал мне +1 по принятому ответу. Конечно, в центре внимания немного другое. – antron
Я был человеком, который спросил/удалил это; Я только что заметил (хе-хе) это. То, что сказал @antron, именно поэтому я удалил его. И да, этот +1 был от меня. ;) – Will