import "Prelude" hiding (zero, one) class MyAdditive a where zero :: a class (MyAdditive a) => MyRing a where one :: a instance MyAdditive Integer where zero = 0 instance MyRing Integer where one = 1 data Poly a = Poly [a] instance (MyAdditive a) => MyAdditive (Poly a) where zero = Poly [] instance (MyRing a) => MyRing (Poly a) where one = Poly [one] main :: Poly Integer main = one -- [1]