При определении простой функции, которая принимает квадрат значения, SML NJ передает подпись для этой функции целым типам. При объявлении подписи для типов float SML может работать с значениями с плавающей запятой.Тип арифметической функции SML выводится на int
- fun sqr x = x * x; val sqr = fn : int -> int - fun sqqr (x : real) = x * x; val sqqr = fn : real -> real - sqqr 3.4; val it = 11.56 : real
- Почему и как делает SML вывод этот конкретный тип здесь?
- Есть ли особые предпочтения для ints?
- Это специальное поведение для этих арифметических операций или его можно найти в других местах?