
Hi Evan Singleton (aka wrap) would be nice - isn't it called Pointed in the typeclassopedia but not otherwise existent? I suppose its missing by historical accident rather than design. I frequently use Semigroup (append but no zero) - there is one on Hackage without any instances: http://hackage.haskell.org/package/algebra I'm no fan of (!!) on lists or other containers where it isn't O(1), but lookup/member are a bit more promising. However are there any useful derived operations or constructions that can be defined only in terms of a Lookup type class? For comparison, Monoid has mconcat as a derived op and e.g. the Writer monad can be usefully abstract by relying only on the Monoid interface as can Foldable. Excepting Data.Tree, Data.Graph and HashTable, 'containers' seems pretty regular now - it certainly has moved on with 0.3.0.0. Best wishes Stephen