Boost logo

Boost :

From: vicente.botet (vicente.botet_at_[hidden])
Date: 2008-04-06 12:05:26


As you can see this is not a review. I have no doubt that Egg is an excelent
candidate for a Boost library and that there are a lot of hidden diamons.

I have only started to read the docummentation (the introduction adn the
quick start) and for the moment I'm not sure that I will find the time to
see the impementaion. The subject is really abstract and it is hard to read
without stoping every two lines to se if I have realy understood. I supose
that there are other boosters in the same situation.

I have a little problem that could be a major one. In the documentation it
is cleary state:
"Also, assume that every expression is placed after:
namespace egg = boost::egg;
using namespace egg;"

Does it means that every not prefixed symbol comes from egg? I think that it
will be better to prefix every specific egg class by egg::. There are some
moments that I dont't know if the used class is a egg class or a boost
class. This is surely due to the fact that Egg use class or functions names
already in use on Boost or the STL.
This has nothing to be with the contents. I recognize that this is not
natural (I'm writing now a library and I use the same style) for the writer
to prefix every new symbol, but I'm sure the reader will apreciate. We
shouldn't mix documentation and coding styles.

I dont find too much clear the naming of Major and Little.

"Function Adaptors which take Polymorphic Function Objects then return
adapted ones."
Could you ad to what these are adapted?

"Function Objects which are ports of famous function templates."
Could you explain why this is useful?

I really think that the introduction do not show clearly what is the problem
Egg try to solve.
" Unfortunately, if you need a Polymorphic Function Object whose return type
depends on its argument types, it is not easy. "
I think that you should present here what can or can not be done without
Egg, and show how Egg helps to do that.
The section "Problems of function templates" for the "Quick Start" shoud
appear in the introduction to my taste.

May be you can add a 6th problem: a template cannot be passed to
boost::lambda::bind as it seam from the introductuion this is a majot goal
of the Egg library. maybe it would be a good idea to show hwhat the user
needs to do today to pass a template to the boost::lambda::bind function and
how Egg make it easier.

One minor remark on the documentation. There is an incoherence on the two
first pages:
Egg is known to work on the following platforms:

  a.. Microsoft Visual C++ .NET Version 7.1 SP1
  b.. Microsoft Visual C++ 2005 Express Edition SP1
  c.. Microsoft Visual C++ 2008 Express Edition
  d.. MinGW with GCC 3.4.4
  e.. MinGW with GCC 4.1.2

Egg is known to work on the following platforms:

  a.. Microsoft Visual C++ Version 7.1 or later
  b.. GCC 3.4.4 or later

The Rationale in the Introduction seam to not add nothing interesting. Are
there some missing links?

I expect to have enough time to do a review, even a little one.

Vicente Juan Botet Escriba

----- Original Message -----
From: "dan marsden" <danmarsden_at_[hidden]>
To: "Boost" <boost_at_[hidden]>; "Boost Announce"
<boost-announce_at_[hidden]>; "Boost Users"
Sent: Sunday, April 06, 2008 1:59 PM
Subject: [boost] Egg 2nd request for reviews

> Hi All
> The review of the Egg library by Shunsuke Sogame has been running for 1
> week now. There has been some discussion of the library on a couple of
> related threads, but no reviews submitted so far. Please try and find time
> to submit a review of this library if possible.
> If you wish to review, but don't have time before the review ends on April
> 13th, please post to that effect, we may be able to extend / move the
> review period to help reviewers.
> Introduction:
> It is not so easy to define Function Objects
> especially if you want to support Boost.ResultOf and Boost.Lambda.
> Therefore, as Boost provides iterator_facade and iterator adaptors,
> Egg provides function_facade and function adaptors.
> Egg provides the following features:
> * Workaround for the Forwarding Problem
> * Helpers to build Function Objects:
> * egg::function and egg::function_facade provides the way to
> build Function Objects which supports Boost.ResultOf and Lambda.
> * Function Objects Adaptors(in other words, higher-order functions):
> * egg::curryN supports the currying.
> * egg::pipable emulates extension methods(C#).
> * egg::fuse/unfuse emulates variadic functions.
> * egg::nestN represents nested lambda expressions.
> * etc...
> The documentation is on line:
> The zipped source code is in Vault/FunctionObjects:
> Tested under:
> Boost Development Trunk and Boost Version1.34.1.
> ---------------------------------------------------
> Please always state in your review, whether you think the library should
> be
> accepted as a Boost library!
> Additionally please consider giving feedback on the following general
> topics:
> - What is your evaluation of the design?
> - What is your evaluation of the implementation?
> - What is your evaluation of the documentation?
> - What is your evaluation of the potential usefulness of the library?
> - Did you try to use the library? With what compiler? Did you have any
> problems?
> - How much effort did you put into your evaluation? A glance? A quick
> reading? In-depth study?
> - Are you knowledgeable about the problem domain?
> Thanks
> Dan Marsden
> Review Manager
> ___________________________________________________________
> Yahoo! For Good helps you make a difference
> _______________________________________________
> Unsubscribe & other changes:

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