Fusion/Phoenix/mpl/lamda/... (was Re: [Bind] arity of arbitrary object)
On 1/17/07, Joel de Guzman
Peter Dimov wrote:
arity( _bi::bind_t
) :- max( arity( e ) ) for each e in L arity( X ) :- is_placeholder<X>::value This could be much easier with a bind that uses a fusion tuple as L. :-)
Phoenix :)
Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
Someone (Joel?) want to explain the differences between fusion/phoenix/mpl/etc/whatever-else-seems-overlapping? Thanks. Tony
-----Original Message----- From: boost-users-bounces@lists.boost.org on behalf of Gottlob Frege Someone (Joel?) want to explain the differences between fusion/phoenix/mpl/etc/whatever-else-seems-overlapping? ----- Good question. Do phoenix tuples have an interface appropriate to use with the fusion/mpl algorithms? Sohail
Sohail Somani wrote:
-----Original Message----- From: boost-users-bounces@lists.boost.org on behalf of Gottlob Frege
Someone (Joel?) want to explain the differences between fusion/phoenix/mpl/etc/whatever-else-seems-overlapping?
-----
Good question. Do phoenix tuples have an interface appropriate to use with the fusion/mpl algorithms?
Ok... long story. First some history. Fusion was based on the original phoenix tuples. Jaakko helped out in the original fusion (we call it now fusion1). It was meant to replace boost.tuples. Fusion2 (the one that was reviewed and is now part of Boost) is a rewrite which, among other things, opened up the possibility of having multiple sequence types (e.g. vector, list, etc.). It also opened up the option to adopt other pre-written sequences (e.g. the original boost.tuples). So, instead of replacing boost.tuples, I decided to just adopt it so you don't have to rewrite your old code that uses boost.tuples. boost.tuples will stay as is. It is now a full fledged fusion citizen, meaning, you can use fusion facilities (e.g. algorithms and interope- rability with other sequence types) with your boost.tuples. Phoenix (the original, we now call phoenix1), was developed before lambda became part of boost. It was (and still is) a side library of spirit. It had some capabilities that lambda did not have, and lambda actually borrowed some of its features in the course of time. Anyway, to cut the long story short, Jaakko and I decided to have a merger (lambda/phoenix). Phoenix2, which I should be releasing soon, is the biggest step towards that. It took a long time and necessitated the development of Fusion1 (and then Fusion2 -- the latest Phoenix2 uses the latest Fusion2). It's an evolution, and we're getting there towards the original goals. Fusion is a prime enabler. It took a long time to develop, but it was all worth it. Soon, you'll be seeing more Fusion based libraries. Proto is one example. Proto is an expression template library written by Eric Niebler. Spirit2, now in development, is also based on Fusion (and Proto). This very thread, shows why a library such as fusion is an important infrastucture in these types of libraries, and in library development in general. I hope that clarifies things. Regards, -- Joel de Guzman http://www.boost-consulting.com http://spirit.sf.net
participants (3)
-
Gottlob Frege
-
Joel de Guzman
-
Sohail Somani