[nhc-users] No default for MutualRecursion.PP

Christian Maeder maeder at tzi.de
Tue Jun 7 14:05:06 EDT 2005


Hi,

The program below is accepted by "ghc -fno-monomorphism-restriction" and
"hugs +98". Why can't nhc98 (v1.18) handle it?

Tossing in something like:

  instance PP ()
  default (())

looks a bit stupid in order to become "portable", doesn't it?

If I replace PP by Show (and pp by show and omit the class declaration)
nhc98 has no problem. Also if I replace one occurrence of fA or fB
directly with pp it goes through.

Cheers Christian

> hmake -nhc98 MutualRekursion.hs
nhc98     -c  -o MutualRekursion.o MutualRekursion.hs
======  Errors after type inference/checking:
No default for  MutualRecursion.PP at 23:1-24:18.(174,[(148,187)])
No default for  MutualRecursion.PP at 19:1-20:18.(183,[(148,186)])

-- --------------------------------------------------------------------

module MutualRecursion where

data A a = A a | BasA (B a)

data B a = B a | AasB (A a)

class PP a where
    pp :: a -> String

instance PP a => PP (A a) where
    pp (A a) = pp a
    pp (BasA b) = pp b

instance PP a => PP (B a) where
    pp (B a) = pp a
    pp (AasB b) = pp b

fA :: PP a => A a -> String
fA (A a) = pp a
fA (BasA b) = fB b

fB :: PP a => B a -> String
fB (B b) = pp b
fB (AasB a) = fA a


More information about the Nhc-users mailing list