[prev in list] [next in list] [prev in thread] [next in thread] 

List:       boost
Subject:    Re: [boost] [GSoC] [Boost.Hana] Formal review request
From:       Louis Dionne <ldionne.2 () gmail ! com>
Date:       2014-07-30 4:43:24
Message-ID: 1406695404962-4665759.post () n4 ! nabble ! com
[Download RAW message or body]

Edward Diener <eldiener <at> tropicsoft.com> writes:

> 
> On 7/29/2014 9:38 PM, Louis Dionne wrote:
> > Edward Diener <eldiener <at> tropicsoft.com> 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.

Louis




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

_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic