type Polynom = [Double] add :: Polynom -> Polynom -> Polynom add a [] = a add [] a = a add (x:xs) (y:ys) = (x+y) : add xs ys eval :: Polynom -> Double -> Double eval [] x = 0 eval (p:ps) x = p + x * (eval ps x) -- alternativ: eval p x = foldr (\element rest ->element+x*rest) 0 p deriv :: Polynom -> Polynom deriv [] = [] deriv p = zipWith (*) [1..] (tail p)