ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> boost
boost
Re: [boost] FC++ formal review
by Brian McNamara other posts by this author
Mar 1 2004 10:51PM messages near this date
[boost] FC++ formal review | RE: [boost] FC++ formal review
On Sun, Feb 29, 2004 at 11:51:28PM -0700, Jonathan Turkanis wrote:
>  Here is my formal review of FC++ -- sorry to wait to the last minute.

Wow, thanks for these extensive comments.  I appreciate the time you
spent and the many concrete pieces of advice for improvement.


A few quick comments:

I like your suggestions about how to generalize the "arity" aspects of
functoids.  A few people have already mentioned using the preprocessor
or mpl or integer-valued template parameters, but your comments have
been more specific and helped give me a better "global" view of how it
should all work, ideally.


>  B)  Rather than having users define direct functoids, then wrapping
>  them in full functoids when they want to take advantage of 'sugar', it
>  should be made easy to define full funtoids, so that all function
>  objects designed for use with FC++ can be expected to be full. (One
>  still needs adapters for foreign function objects, of course.) I think
>  this could be done with macros, e.g.:
>  
>      struct plus {
>         // declare signature.
>         BOOST_FCPP_LAMBDA_SUPPORT(2, plus)
>         int operator() (int, int);
>      };
>  
>  I thought I remembered several reviewers suggesting this, but looking
>  back, I don't see it. Brian's suggestion for allowing non-const
>  reference parameters seems to require different overloads of
>  operator() depending on which parameter types were declared to take
>  non-const references. If this is true, more information might have to
>  be passed to the macro to avoid an explosion of (mostly disabled)
>  overloads.
>  
>  One could still keep 'full' as an implementation detail, of course.

What's the motivation for this change?  I am all for reducing
boilerplate code, but I am unclear is that is the only reason you're
suggesting this, or if there's another reason you want to avoid the
"wrapping" mechanism in the current implementation.  (I like the idea
of "full-ness" being "just another combinator" (make_fullN).)


>  C) The technique for handling signatures of momomorphic and
>  polymorphic funtoids can be unified. [...long discussion elided...]

A while back, I actually experimented down a road very similar to the
one you describe here.  I ultimately rejected this kind of signature
representation, for a number of reasons (I don't recall them all right
now--we can discuss it more off-list if you like).

It has become so rare that monomorphic signatures are ever used/useful
in FC++, that a viable solution to reduce the complexity here is simply
to eliminate monomorphic signatures entirely.


>  Now, instead of writing reuser2<VAR, INV, VAR, T, U, V>, you write
>  reuser2<T, inv<U>, V>. This looks easier to use, understand, and
>  generalize. You might even be able to drop the '2'.

This is a terrific idea (wish I'd thought of it myself :) ).

-- 
-Brian McNamara (lorgon@cc.gatech.edu)
_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Thread:
Jonathan Turkanis
Jaakko Jarvi
Brian McNamara
Paul Mensonides
Jonathan Turkanis
Jonathan Turkanis
Brian McNamara
David B. Held
Gennadiy Rozental
Darren Cook
Gennadiy Rozental
Jonathan Turkanis

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved