= Solution
The coefficient index supplies the multiplier for a <formal derivative> and the divisor for a zero-constant <formal integral>:
``
deriv :: Num a => [a] -> [a]
deriv as = zipWith (*) (map fromInteger [1..]) (tail as)
integral :: Fractional a => [a] -> [a]
integral as = 0 : zipWith (/) as (map fromInteger [1..])
``
Using `fromInteger` makes the index stream unbounded before conversion to the coefficient type. The <formal derivative> drops the original constant coefficient; the <formal integral> prepends its chosen zero constant. With exact `Rational` coefficients these are exact algebraic operations. Analytic <convergence> is unnecessary for operations on <formal power series> over a characteristic-zero field.
Back to article page