Унарный оператор отрицания в SML не -
, как в большинстве языков, а вместо ~
. Вероятно, именно это и вызывает указанную вами ошибку c.
Тем не менее, существуют некоторые другие проблемы с этим кодом. L
не привязан к примеру, который вы публикуете, например.
Я думаю, вы, возможно, захотите, чтобы ваша функция выглядела как
fun square (x : real) 0 = 1
| square x i = x * (square x (i - 1))
Вы захотите вернуться в Чтобы вычислить квадрат.