Trójmian kwadratowy w haskelu

0

Napisałem następujący program na znajdowanie pierwiastków trójmianu:

roots :: Float -> Float -> Float -> (Float, Float)
roots a b c
  | discriminant > 0 = ((-b + (sqrt discriminant))/(2*a), (-b - (sqrt discriminant))/(2*a)
  | otherwise = error "brak"
where
discriminant = b^2 - 4*a*c

dlaczego wypluwa mi parse error on input `|' ??

Tracę już powoli cierpliwość do tego języka, czepia się o największe gó**a. Nie jestem w stanie napisać prostego ifa bo coś mu wiecznie nie pasuje.

Wiem, że wcięcia mają tutaj kluczowe znaczenie, ale ja już próbowałem chyba wszystkich możliwości i dalej nic.

1

Masz niedomkniętny nawias na końcu pierwszego guarda i źle indentujesz where (ma to znaczenie). Poza tym, jeśli tracisz cierpliwość to po co się uczysz? :>

roots :: Float -> Float -> Float -> (Float, Float)
roots a b c
  | discriminant > 0 = ((-b + (sqrt discriminant))/(2*a), (-b - (sqrt discriminant))/(2*a))
  | otherwise = error "brak"
  where
  discriminant = b^2 - 4*a*c
0

Co to jest guard i co do znaczy, że źle indentuję ?

Nie ma to jak wybrac jeden z najdziwniejszych jezykow skladniowo i sie denerwowac bledami skladniowymi, lol ;)

Ja tego języka sobie nie wybrałem. Został mi on narzucony przez program studiów i wykładowcę, który stwierdził, że powinniśmy wszystkiego nauczyćsię sami.

1 użytkowników online, w tym zalogowanych: 0, gości: 1