Per Conor McBride, the Newtype typeclass represents the packing and unpacking of a newtype,
and allows you to operate under that newtype with functions such as ala.
Generics support was added in version 0.4, making this package a full replacement
for the original newtype package, and a better alternative to newtype-th.

NB:Data.Foldable.foldMap is a generalized mconcatMap which is a generalized concatMap.

This package includes Newtype instances for all the (non-GHC/foreign) newtypes in base (as seen in the examples).
However, there are neat things you can do with this with /any/ newtype and you should definitely define your own 'Newtype' instances for the power of this library.
For example, see ala Cont traverse, with the proper Newtype instance for Cont.

This could of course be eased with the addition of generics for version 0.3: