Hi all,

We all know and love Data.Foldable and are familiar with left folds and right folds.  But what you want in a parallel program is a balanced fold over a tree.  Fortunately, many of our datatypes (Sets, Maps) actually ARE balanced trees.  Hmm, but how do we expose that?

It seems like it would be nice to have a standard class that allows you to split a datatype into roughly even halves, until you get down to the leaves.  This goes along with Guy Steele's argument that we should use "append lists" as primitive rather than "cons-lists", and it's why we added append-lists within the monad-par library.

Does this class exist already?  A random google search brought up this module by the name Data.Splittable, but it's not quite the right thing.

Thanks,
  -Ryan