I don't know a thing about SYB, Data.Data, or Data.Typeable, mostly because I'm an efficiency fanatic.  Nevertheless, I'd like to know whether or not there's a way to deconstruct a (mostly) arbitrary type, into tuples, unions, etc. using this framework.  Any thoughts?

You can use the Template Haskell deriving in EMGM to get that structure pretty efficiently.

  http://www.cs.uu.nl/wiki/GenericProgramming/EMGM
  http://hackage.haskell.org/package/emgm

The obligatory question is: why do you want it?

Sean