data Roots a =
NoRoots
| TwoRoots a a
| OneRoot a
instance Show (Roots Int) where
show NoRoots = "No roots found"
show (TwoRoots a b) = "Two roots "++show a ++ " "++show b
show (OneRoot a) = "One root " ++ show a
quadratic a b c
| d==0 = OneRoot x1
| d>=0 = TwoRoots x1 x2
| otherwise = NoRoots
where
d = b*b-4.0*a*c;
sqD = sqrt d;
a2 = 2.0*a;
x1 = (-b+sqD)/a2;
x2 = (-b-sqD)/a2
Очевидный код на Haskell - решение квадратных уравнений. Что не пробовал - не получается написать show для Roots. Там на Int не обращайте внимания - это временный вариант. Не менее идиотский и не работающий чем остальные. Вообще должно работать не только с Int.
Кто подскажет что подправить, спасибо.