The abuse of 'groupBy' in defining 'split' should be fixed. This definition of groupBy from the Haskell 98 online report requires that "When the "By" function replaces an Eq context by a binary predicate, the predicate is assumed to define an equivalence; when the "By" function replaces an Ord context by a binary predicate, the predicate is assumed to define a total ordering."
Your "(const (not . p))" function is supposed to be an Eq predicate but it is not even symmetric. You are depending on quirks of the implementation of groupBy which is an especially bad idea in an example. ChrisKuklewicz 13:41, 20 August 2007 (UTC)