Re: Counting Constructors
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
participants (1)
-
Tobias Haeberlein