El algoritmo de Horner en SML? [cerrado]

Estoy tratando de implementarAlgoritmo de Horner en SML.

fun horner(lst1:real list,x:real) = 
  let
    val i = ref 1
    val result = ref (List.last(lst1))
    in
      if (lst1) = ([]:real list) then 0.0 
      else
        while (!i <= length(lst1)-1) do
          (result:=!result*x+List.nth(lst1,length(lst1)-(!i)-1);
          i := !i+1);
          !result
      end;

Toma un {n}, el coeff de x ^ n, como resultado inicial, luego, utilizando horner, se evalúa un polinomio.

Evalúa como ((a {n} * x + a {n-1}) * x + a {n-2}) .. La lista contiene los coeficientes del polinomio. El problema es la parte "if lst1 = [] .... else". Emplear solo el ciclo while hace que el programa funcione bien. Pero no puedo pensar en nada que esté mal con esa parte.

Respuestas a la pregunta(1)

Su respuesta a la pregunta