module RecContext() where

class Show b => Silly a b | a -> b,b -> a where
   toa :: b -> a
   tob :: a -> b

data SillyType a = forall b . Silly a b => SillyType a b (SillyType a)

f :: SillyType a -> [String]
f (SillyType a b st) = g a b st

g :: Silly a b  => a -> b -> SillyType a -> [String]
g a b st = (show (tob a)) : (show b) : (f st)
