
Robert Ramey
I can't review the whole library. So I'm confining my observations to just a couple of aspects. My method is to review some section of the documentation. it looks like a critique of the documentation, but it's really observations on the underlying design of the library.
[...]
Looking at all the discussions about concepts and comments about type classes that Hana has brought up, I really think I messed up when I tried to answer the "what are type classes" question in the documentation. The docs marketed them as something they were not (an implementation of concepts) and poorly reflected my own view. I'm working on fixing this (and other aspects of the documentation). For now, I'd rather have people think of type classes as a Boost.Fusion tag dispatching system on steroids. It's much closer to that than from C++ concepts, Boost.ConceptCheck and other library implementations of concepts. Do not forget that Hana is (roughly) a library for manipulating heterogeneous containers, like Fusion. For users, type classes should have about the same importance as that of tag-dispatching in Fusion, so that's not a major aspect of the library, even though the current documentation is misleading on that point. Regards, Louis