[Haskell] Soluciones reales de una ecuación de segundo grado

Iniciado por seryioo, 18 Julio 2018, 10:45 AM

0 Miembros y 1 Visitante están viendo este tema.

seryioo

Buenos días.
Estoy liado con Haskell que me la dejé para verano en la carrera.

El ejercicio dice lo siguiente:

Consideremos la ecuación de segundo grado ax2 + bx + c = 0.
a) Define una función raíces que tome tres parámetros (correspondientes a los coeficientes a, b y c
de la ecuación) y devuelva una tupla con las dos soluciones reales de la ecuación (para calcular la
raíz cuadrada, usa la función predefinida sqrt). Recuerda que el discriminante se define como b2-
4ac y que la ecuación tiene raíces reales si el discriminante no es negativo.


Yo he hecho esto:

raices :: Float-> Float-> Float-> (Float, Float)
raices a b c | discriminante<0 = error "Raices no reales"
             | otherwise = ((-b + raiz)/denominador, (-b - raiz)/denominador)
  where
    discriminante = (b*b - 4*a*c)
raiz          = sqrt discriminante
denominador   = 2*a


Pero me tira el siguiente error:

parse error on input `='
    Perhaps you need a 'let' in a 'do' block?
    e.g. 'let x = 5' instead of 'x = 5'
   |
91 |         raiz          = sqrt discriminante
   |                       ^



La solución ya la tengo, pero quiero saber que error estoy cometiendo, ya que no es la primera vez que me aparece.

Gracias!