Jonas,

2010/10/13 Jonas Almström Duregård <jonas.duregard@chalmers.se>
(++) :: Finite s1 a -> Finite s2 a -> Finite (S (Plus s1 s2)) a
(++) (Finite a) (Finite b) = Finite $ a Prelude.++ b
infixr 5 ++

Why do you have the S in the return type of Finite.++ ?

Ozgur