Solution (source code)

= Solution

Use infinite coefficient <lazy lists>:

``
zero, one :: Num a => [a]
zero = 0 : zero
one  = 1 : zero
``

For ordinary numeric coefficients such as `Rational`, \b[`zero == zero` does not terminate], while \b[`zero == one` is `False`]. The former comparison never finds a differing coefficient or reaches two empty <lists>; the latter rejects the unequal first coefficients immediately. Equality of denoted <formal power series> is mathematical equality of all coefficients, whereas this executable <list> comparison is a potentially nonterminating procedure.