[Haskell-cafe] Deriving Show for non-regular data types

David Feuer david.feuer at gmail.com
Wed Mar 11 05:59:58 UTC 2015


You may want to look at the Show1 class, which may or may not help you any.
You also may or may not find Ralf Hinze's paper "Numerical Representations
as Higher-Order Nested Datatypes" helpful. Nested types can be extremely
efficient in certain situations, and it's not *usually* too terribly hard
to read code that uses them, but writing it is an entirely different story.
In some cases, you can get good results using GADTs to enforce your shape
invariants, and they tend to be a lot easier to work with.
On Mar 11, 2015 1:45 AM, "Mark Laws" <mdl at 60hz.org> wrote:

> Hi,
>
> As part of studying Okasaki's PFDS book, I wanted to add Show support
> for each of the data structures, and some have proven to be challenging,
> as some of the types are non-regular and automatic derivation of Show
> doesn't work.  I've been able to add some code that introduces a
> supplementary type class that serves as a way to pass "proof" that the
> wrapping data type supports traversal for Show-ability, but the solution
> seems unsatisfactory.  I would greatly appreciate any suggestions for
> improvements.  I've attached the code; the relevant bits are in
> BankersDeque.hs, Example.hs, NestedShowable.hs, and
> SimpleCatenableDeque.hs.  The same code is available here:
>
> https://gist.github.com/drvink/30fb2a2b257fc99af281
>
> Thanks,
> Mark Laws
>
> --
> |v\ /\ |\ |< |_ /\ \^| //
>
> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/haskell-cafe/attachments/20150311/eb8e3a37/attachment.html>


More information about the Haskell-Cafe mailing list