Принудительное равенство для действительных чисел в Real в SML

Как объясняется в подписи REAL, реальный тип, определенный в SML, не является типом равенства, и, следовательно, следующее выражение не уменьшает

> 1.0 = 1.0;
poly: : error: Type error in function application.
   Function: = : ''a * ''a -> bool
   Argument: (1.0, 1.0) : real * real
   Reason: Can't unify ''a to real (Requires equality type)

Однако это не удобно, поскольку типы данных и списки, содержащие вещественные значения, также теряют равенство. Мне нужно перегрузить полиморфное равенство = с Real.== таким образом, это могло приблизительно рассмотреть также реалы.

Это возможно?

РЕДАКТИРОВАТЬ: отредактированный вопрос, чтобы быть более ясным

2 ответа

Вы читали Почему я не могу сравнить реалы в Standard ML и рассмотреть Real.== оператор или выполнить эпсилон тест? Рассматривали ли вы тип, подобный Data.Decimal на Haskell (в котором мантисса и показатель степени обрабатываются как пара целых чисел)?

Простой ответ: нет, вы не можете.

Другие вопросы по тегам