Re: Counting Constructors
From: Tobias Haeberlein <T.Haeberlein@gmx.de> To: haskell@haskell.org Subject: Counting Constructors
I want a show - instance for that type: data Bind a = Zero | Succ a resp. for the types (Bind ( ... (Bind a)...))
showing the following:
show (Succ ( ... (Succ Zero)..)) = n (where n is the number of Succ's) and
show (Succ ( ... (Succ x)..)) = show x (when x != Zero)
that doesnt make sense. You want n to be some some integral type and show x is a string.
Does anyone know, how to define those functions in haskell/hugs ?? (Are they defineable at all?)
sounds like you really want something like data Bind a = Zero (Maybe a) | Succ (Bind a) instance (Show a) => Show (Bind a) where show x = z 0 x where z count (Zero Nothing) = show count z _ (Zero (Just x)) = show x z count (Succ x) = z (count+1) x Main> let {x :: Bind String; x = Succ $ Succ $ Succ $ Zero Nothing} in show x "3" Main> show (Succ $ Succ $ Zero (Just "Funky")) "\"Funky\"" However just because you can do it doesnt mean you should. Personally, I would think data Bind a = Something Int (Maybe a) or even using the Either datatype in a similar fashion could be more useful (and has a very trivial show instance which would meet your requirements).Meh, I'm probably doing somebody's homework here anyway. Jay
participants (1)
-
Jay Cox