See above. And the only reason I really define this as such is to constrain it in Hash's apply, so that when you do Hash {thing=>thing2} you have to return a hash. The goal is to embed the types in the existing bijection framework. I'm ok with pushing it further, though.