[Haskell-cafe] Rank N type tutorial?

Jason Dagit dagit at codersbase.com
Fri Oct 27 19:26:25 EDT 2006

On 10/27/06, David House <dmhouse at gmail.com> wrote:
> On 27/10/06, David House <dmhouse at gmail.com> wrote:
> > heteroList' = [MkT' 5, MkT' (), MkT' True]
> > main = mapM_ print heteroList'
> >
> > {- prints:
> > 5
> > ()
> > True
> > -}
> Sorry, the definition of main is a bit off. It should read:
> main = mapM_ (\(MkT' x) -> print x) heteroList'
> Of course you have to unpack the MkT' first (or define a Show instance
> for T', noting that you can't derive anything on existentials).

So you specified that the types which T' wraps up should be instances
of Show, so to me it makes sense that you should be able to derive
Show in a way similar to how newtype deriving works.  But perhaps
there is a subtlety that I'm missing?

I mean, to make an instance of Show I'm just going to type something
trivial like this:
instance Show T' where
  show (MkT' a) = "MkT' " ++ show a

Or perhaps, since I'm writing it by hand I'd omit the "MkT' " and just
show the a.


More information about the Haskell-Cafe mailing list