Ошибка компиляции корней уравнения Хаскелла - PullRequest
0 голосов
/ 18 декабря 2011

Следующий алгоритм должен вычислять корень уравнения 2-й степени, но его компиляция приводит к ошибке компиляции.Я скопировал его из учебника.

2 roota.hs:5:20: parse error on input `='

roots (a,b,c) = 
        if d < 0 then error "sorry" else (x1, x2)
        where x1 = e + sqrt d / (2 * a)
            x2 = e - sqrt d / (2 * a)
            d = b * b - 4 * a * c
            e = - b / (2 *a)

Спасибо за ответы.

Ответы [ 2 ]

5 голосов
/ 18 декабря 2011

Это проблема с отступом.Попробуйте

roots (a,b,c) = 
         if d < 0 then error "sorry" else (x1, x2)
         where
           x1 = e + sqrt d / (2 * a)
           x2 = e - sqrt d / (2 * a)
           d = b * b - 4 * a * c
           e = - b / (2 *a)

См. Также вопрос об отступе и и статью из Haskell Wikibook .

1 голос
/ 18 декабря 2011

, где не обязательно должно быть на одной строке; это работает:

roots (a,b,c) = 
        if d < 0 then error "sorry" else (x1, x2)
        where x1 = e + sqrt d / (2 * a)
              x2 = e - sqrt d / (2 * a)
              d = b * b - 4 * a * c
              e = - b / (2 *a)

или даже это:

roots (a,b,c) = 
        if d < 0 then error "sorry" else (x1, x2) where 
 x1 = e + sqrt d / (2 * a)
 x2 = e - sqrt d / (2 * a)
 d = b * b - 4 * a * c
 e = - b / (2 *a)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...