Boost logo

Boost :

Subject: [boost] [Hana] Formal review
From: Manu343726 (manu343726_at_[hidden])
Date: 2015-06-28 04:32:33


Here's my formal review of Hana

- Whether you believe the library should be accepted into Boost
  
  Yes

- Your name

Manuel Sánchez

- Your knowledge of the problem domain.

I have been doing TMP side projects as a hobby, including my own tmp library
in the same sense of Hana but metafunction based (Like Boost.MPL).

- What is your evaluation of the library's:
  * Design

Hana design and wording makes it look more like a Hakell library than a C++
one (All the functional concepts, algorithms etc). I think it's fine since
Hana algorithms are about declarative data transformation. C++ needs that
change in the way of thinking, but I expect some others (more conservative
C++ programmers) to not accept Hana for not being too much "C++ish".

About metaprogramming, wrapping types into template variables is a game
changer. Some others noticed that doing type and value manipulation with the
same code may be confusing since with templates there is a clear line
between type manipulation code (templates) and value manipulation code
(normal C++). I'm partially agree, but I prefer not to write/maintain two
different libraries for exactly the same algorithms. That's the core value
of Hana.

  * Implementation

Tmp is usually ugly, but Louis does a great work at making code as clear as
possible. Code is well divided and documented.

  * Documentation

The library is documented in depth. I have mainly two issues: More
references about basic concepts and navigation. Both are already covered by
issues at github, so I will not dive into them here.

  * Tests

Not looked.

  * Usefulness

There are only a few libraries out there that provide this kind of
STL-quality set of algorithms. Having those work with types and values
worths it. As others said, there's a problem on current compiler support
(Only recent versions of Clang). I like the idea of pushing towards compiler
vendors, but it's true that since the beginning Boost libraries were
designed to work on any C++ platform available.
In my opinion, we should give Louis an opportunity, while giving vendors
time to update their implementations.

- Did you attempt to use the library? If so:
  * Which compiler(s)

clang 3.6.1

  * What was the experience? Any problems?

I tried some experiments regarding type manipulation. No special issues
raised out. It worked as expected.

- How much effort did you put into your evaluation of the review?

A few hours playing with the lib, plus a couple of hours to write the
review.

--
View this message in context: http://boost.2283326.n4.nabble.com/Hana-Formal-review-tp4677606.html
Sent from the Boost - Dev mailing list archive at Nabble.com.

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