Boost logo

Boost :

Subject: Re: [boost] [GSoC] [Boost.Hana] Formal review request
From: Louis Dionne (ldionne.2_at_[hidden])
Date: 2014-07-30 00:43:24

Edward Diener <eldiener <at>> writes:

> On 7/29/2014 9:38 PM, Louis Dionne wrote:
> > Edward Diener <eldiener <at>> writes:
> >
> >>
> >> [...]
> >>
> >> Please consider also that you are using terminology in the present
> >> documentation which does not relate to C++ very well, although it may
> >> relate to Haskell for all I know. If you rework the documentation
> please
> >> use C++ terminology for things. As an example you referred to Type<T>
> as
> >> an object when in C++ it is a class.
> >
> > I am confused; `Type<T>` does not exist in Hana, so I doubt I mention it
> > anywhere unless I made an error. There's `type<T>`, which is a variable
> > template, and `Type`, which is a C++ struct.
> Yes it is 'type<t>' and not 'Type<t>'. But...
> "First, type is a variable template, and type<T> is an object
> representing the C++ type T."
> The syntax 'type<T>' normally means a class in C++.

As Tongari points out correctly, `type<T>` is a variable template, as in
the new feature in C++14. Specifically, it is declared as:

    template <typename T>
    constexpr unspecified type{};

Then, `type<T>` is an object equivalent to `unspecified{}`. Perhaps this was
the cause of your confusion?

> >> You also refer to type classes and data classes but C++ has no specific
> >> meaning for either of those terms.
> >
> > What did people say when they first heard about:
> > - Proto transforms
> > - MPL metafunctions / metafunction classes
> > - MPL/Fusion tags
> > - any domain-specific term introduced in a library (Spirit has a lot
> of them)
> >
> > Surely C++ had no specific meaning for any of those terms before they
> were
> > introduced. With each library comes some terminology, and "type class"
> and
> > "data type" are just that; new concepts for which names had to be
> chosen.
> >
> > That being said, type classes feel like C++ concepts and data types feel
> > like Fusion/MPL tags, so I'll seriously consider renaming them to that
> if
> > it can make people happier. I'm a bit worried about renaming "type
> classes"
> > to "concepts" though, as it could lead to confusion. What do you think?
> I have no objection what you call them. I just felt that you should
> explain them as thoroughly as you feel possible ( remember you may know
> what you have designed but to others this is new ground ) before
> examples and not after.

I'll see if there are some places where I throw some code without enough
explanation/context and try to make it clearer.

> [...]
> General advice. It mainly reflects that your method of explaining the
> conceptual elements of your syntax is very difficult for me, but may be
> welcomed by most others. I am just mentally incapable of understanding
> syntactical examples before I understand thoroughly the conceptual
> elements which the example is about.
> I will reread the doc again to see if I can get anywhere. Thanks for
> your efforts !

Give me a couple of days to work on what has been discussed in the last
days, and then give it a shot. Thank you a lot for your criticism, it is
much appreciated.


View this message in context:
Sent from the Boost - Dev mailing list archive at

Boost list run by bdawes at, gregod at, cpdaniel at, john at