...one of the most highly
regarded and expertly designed C++ library projects in the
world.
— Herb Sutter and Andrei
Alexandrescu, C++
Coding Standards
The original code of FC++ was developed by Brian McNamara and Yannis Smaragdakis between 2000 and 2003. One of the aims of their work was to implement as much as possible of the Haskell prelude in C++. In the end they achieved a very large part of that and went on to implement other similar things not in the Haskell prelude. This was made up of a large amount of code written very carefully in a consistent style which made it easy to extend it to provide more facilities.
At the end of that time, two versions of it existed, FC++ 1.5 and Boost FC++ which was proposed for inclusion in Boost and rejected. Both are documented on FC++.
After 2003 John Fletcher spent a lot of time developing both these versions and adding new features to them. One of the reasons intially was that the existing versions could handle only a small number of function arguments. He was able to increase the limit on the number of arguments and use the new version to implement a number of new ideas. No new release has ever been made although a draft release 1.5.2 exists. Much of his activity is documented by FunctoidsInCpp where some discussion took place with other people about this work.
John discussed with Joel de Guzman how to make FC++ compatible with Phoenix. Joel suggested using Phoenix as a basis for a new version of FC++.
In 2014 John became the maintainer of Phoenix and after spending time getting to know it he has now started to fulfil his idea of a new version of FC++. What is emerging is significantly different from FC++ in the detail of the implementation. In some ways it will be more powerful as it is well integrated with the facilities of Phoenix. In other ways it will lack some features of FC++ as they can now be implemented in other ways.