Boost logo

Boost :

Subject: [boost] [Hana] Informal review request
From: Louis Dionne (ldionne.2_at_[hidden])
Date: 2015-03-05 09:41:18


Dear Boost,

As some may be aware of, I am currently working on a metaprogramming library
called Hana, with the intention of proposing it for inclusion in Boost. The
purpose of that library is to act as a toolbox for expressing computations
on both types (like the MPL) and heterogeneous values (like Fusion). The
library is built around C++14 idioms and implementation techniques to
maximize expressiveness and performance.

I am now requesting feedback from the community, with the intention of asking
for a formal review in the next months. A similar review was asked for in last
August. The library has undergone several modifications since then, both to
address issues raised during the review and for general improvement. Here are
some issues that were raised during the review and addressed:

- Usage of names and terms unknown to C++ programmers: Efforts were made to
  make this better, and several functions were renamed (`fmap` is now
  `transform`). When possible, the documentation also uses terms more
  familiar to C++ programmers, like concept instead of "type class".

- The order of the arguments to some algorithms was unfortunate for C++. It
  was consistent with Haskell, but it turned out to be cumbersome in C++.
  This is changed in most places.

- Inability to easily implement individual algorithms: This is fixed, and
  algorithms are now standalone structures using tag-dispatching, almost
  exactly as in Fusion.

- Lack of a good introductory tutorial: A lot of work has gone into improving
  both the tutorial and the reference documentation.

- Lack of support for mainstream compilers: The library is now almost fully
  functional with Clang 3.5. A GCC 4.9 port with reduced functionality is
  also underway on the `redux` branch.

The library is available at [1] and the documentation at [2]. Comments should
be directed to this mailing list, while bugs and other similar problems should
be directed to the GitHub issue tracker. Please participate, especially if
you have interest and/or experience in metaprogramming; after all, you
represent the target audience for Hana.

Thank you,
Louis Dionne

[1]: https://github.com/ldionne/hana
[2]: http://ldionne.github.io/hana/


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk