Ошибка простого кода SML - PullRequest
2 голосов
/ 23 июня 2011

Я только начал изучать SML и все еще в процессе осмысления его сообщений об ошибках.

при попытке ввести определение функции ниже

val rec : real->real = fn 0.0 => 0.0 | n:real => 1.0/n;

я получаю следующую ошибку:

stdIn:25.9-25.17 Error: syntax error: deleting  COLON ID ARROW
stdIn:25.24-25.33 Error: syntax error: deleting  FN REAL DARROW
stdIn:25.38 Error: syntax error found at BAR

Может кто-нибудь указать, что я делаю не так?

спасибо.

1 Ответ

4 голосов
/ 23 июня 2011

В вашем коде две ошибки:

  1. Между val rec и аннотацией типа должно быть имя значения, которое вы определяете.
  2. Нельзя использовать сопоставление с образцом на real с. Поскольку real неточны, они не являются типами равенства, поэтому вы не можете использовать = для них. Вам нужно использовать Real.== для сравнения вещественных чисел на равенство (или лучше: не сравнивайте их на равенство, а вместо этого сравнивайте их с некоторой дельтой).
...