Trójmian kwadratowy w haskelu

Z1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
0

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

Kopiuj
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.

OA
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 95
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? :>

Kopiuj
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
Z1
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 4
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.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.