TAD de los polinomios: Integral de un polinomio
Usando el tipo abstracto de los polinomios, definir la función
| 1 |    integral :: (Fractional a, Eq a) => Polinomio a -> Polinomio a | 
tal que integral p es la integral del polinomio p cuyos coefientes son números racionales. Por ejemplo,
| 1 2 3 4 5 6 7 |    λ> ejPol = consPol 7 2 (consPol 4 5 (consPol 2 5 polCero))    λ> ejPol    2*x^7 + 5*x^4 + 5*x^2    λ> integral ejPol    0.25*x^8 + x^5 + 1.6666666666666667*x^3    λ> integral ejPol :: Polinomio Rational    1 % 4*x^8 + x^5 + 5 % 3*x^3 | 
Soluciones
A continuación se muestran las soluciones en Haskell y las soluciones en Python.
| 1 2 3 4 5 6 7 8 9 10 11 | import TAD.Polinomio (Polinomio, polCero, consPol, esPolCero, grado,                       coefLider, restoPol) import Data.Ratio integral :: (Fractional a, Eq a) => Polinomio a -> Polinomio a integral p   | esPolCero p = polCero   | otherwise   = consPol (n+1) (b / fromIntegral (n+1)) (integral r)   where n = grado p         b = coefLider p         r = restoPol p | 
| 1 2 3 4 5 6 7 8 9 10 11 | from src.TAD.Polinomio import (Polinomio, coefLider, consPol, esPolCero, grado,                                polCero, restoPol) def integral(p: Polinomio[float]) -> Polinomio[float]:     if esPolCero(p):         return  polCero()     n = grado(p)     b = coefLider(p)     r = restoPol(p)     return consPol(n + 1, b / (n + 1), integral(r)) |