> newtype B = B { toBool :: Bool }

yep, this works well. toBool b1 is easy enough ;)

I wondered if there was an easy (with deriving etc) way to test B as it is. If there isn't - no biggie.