Возможно, вы используете библиотеку JaneStreet Base. Возможно, вы импортировали его так:
open Base;;
База пытается ограничить исключения для функций с явным суффиксом _exn
, поэтому она затеняет встроенный полиморф c равенство (=)
, что может вызвать исключение для некоторых входных данных (например, если вы сравниваете структуры, содержащие функции).
Вы можете получить равенство полиморфи c обратно следующим образом:
let (=) = Poly.(=);;
Или вы можете использовать его с местный импорт: Poly.(x = y)
.
Есть плюсы и минусы сравнения полиморфов c. Похоже, консенсус заключается в том, что использование мономорфного c сравнения (например, String.equal
, et c) является более надежным выбором, даже если оно менее удобно.