Thanks all for helping me!

For those, who are interested in it: 
I got another solution of the problem:
Instead of defining 

        data Nest a = Zero | Succ a

I "lift" Nest to the class level:

        data Zero a = Zero a
        data Succ a = Succ a

        class Nest a where 
                count :: a -> Either Int a
        
        instance Nest (Zero a) where 
                count Zero = Left 0
        
        instance Nest a => Nest (Succ a) where
                count (Succ a) = case (count a) of
                                Left i -> (Left i+1)
                                Right _ -> (Right (Succ a)
                                
Then my desired show-instance is easy to define by
        
        instance Show (Zero a) where
                show Zero = show 0
                
        instance (Show a, Nest a) => Show (Succ a) where
                show x = case (count x) of 
                                Left i -> show i
                                Right (Succ x') -> show x'
                                
(Funny, Conor McBride does a similar "lifting" throughout his 
ingenious paper "Faking It: Simulating dependent types in Haskell"...)


-Tobi

-- 
GMX - Die Kommunikationsplattform im Internet.
http://www.gmx.net

GMX Tipp:

Machen Sie Ihr Hobby zu Geld bei unserem Partner 1&1!
http://profiseller.de/info/index.php3?ac=OM.PS.PS003K00596T0409a


_______________________________________________
Haskell mailing list
[EMAIL PROTECTED]
http://www.haskell.org/mailman/listinfo/haskell

Reply via email to