как сказано в заголовке, например, у меня есть эта функция, которая, конечно, выдает ошибку:
bhaskara a b c =
if discriminant >= 0 then (x1,x2) else str_disc
where
discriminant = (b^2 - (4*a*c))
str_disc = "the discriminant is less than zero"
x1 = ((-b) - sqrt (b^2 - (4*a*c))) / (2*a)
x2 = ((-b) - sqrt (b^2 - (4*a*c))) / (2*a)
я слышал, что вы можете использовать пользовательские типы данных, поэтому я подумал сделать что-то вроде этого, но я явно делаю что-то не так:
data Result = (Double, Double) | String
bhaskara :: Double -> Double -> Double -> Result
bhaskara a b c =
if discriminant >= 0 then (x1,x2) else str_disc
where
discriminant = (b^2 - (4*a*c))
str_disc = "the discriminant is less than zero"
x1 = ((-b) - sqrt (b^2 - (4*a*c))) / (2*a)
x2 = ((-b) - sqrt (b^2 - (4*a*c))) / (2*a)
может кто-нибудь показать, как подойти к этому?
кстати я знаю, что не включаю случай, когда дискриминант равен нулю
data Result = Values Double Double | Error String
- person Willem Van Onsem   schedule 08.08.2020