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@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@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe