Boost logo

Boost :

From: Brian McNamara (lorgon_at_[hidden])
Date: 2003-06-25 13:46:25

I would like to see if there is interest in incorporating the FC++
library into Boost.

FC++ is a library for functional programming. In FC++ we program with
"functoids" (classes which define operator() and obey certain other
conventions). The library features include:
 - higher order, polymorphic (template) functions (direct functoids)
 - lazy lists
 - library of useful functions, combinators, and monads (mostly
   mimicking the Standard Library of the language Haskell)
 - currying
 - infix function syntax
 - dynamically bound functions (indirect functoids)
 - effect combinators
 - interfaces to STL via iterators
 - ways to transform normal C++ functions/methods into functoids
 - reference-counted pointers
 - a lambda sublanguage, with syntax for lambda, let, letrec,
   do-notation, and monad comprehensions
Much of the documentation for FC++ can be found at
and the rest appears linked from
(which has a pre-release of the upcoming version (v1.5), currently out
for beta-testing). The upcoming release comprises about 9000 lines of
code and compiles on a number of different compilers (g++, Comeau,
Intel, MSVC++).

I have received mail a couple times in the past few years expressing
interest in adding FC++ to Boost. However until now, I have been
unwilling (1) to do the work to "Boostify" the library, and (2) to lose
any "creative control" to tinker with things on my own whims. I think
now the library has finally settled down, and all the major features I
have wanted to add are included in the upcoming release (v1.5) of
FC++. And I have some free time this summer to do the work. Which is
why I'm now finally talking to you-all.

So I am sending this mail to see:
 (1) If there is still interest in adding FC++ to Boost, and
 (2) If there is interest, what-all needs to be changed with the FC++
     library to make it meet the standards of Boost.

With regards to (1), I hope yes, but the Boost Lambda Library has a bit
of conceptual overlap with FC++, so I can imagine this issue being
potentially contentious. (FC++ and Lambda ostensibly provide much of the
same kinds of functionality, but while there is overlap, each library
does a lot of "its own thing" too. I (and Jaakko too, probably) can say
more about this if necessary.)

With regards to (2), I have been reading all the stuff on the Boost web
site regarding submissions, and so I am aware of a number of issues,
 - Reuse: FC++ "reinvents" a number of Boost's libraries in its
      implementation, such as smart pointers and metaprogramming
      tricks. A Boost version of FC++ should reuse Boost libraries for
 - Documentation: as of yet, there is no good singular "users guide" for
      FC++ aimed at the audience of C++ programmers; I'd need to write
 - Naming conventions: FC++ uses a naming convention other than Boost's
      (including systematically using capital letters in identifiers).
But at this point I'm probably already getting ahead of myself. So I'll
stop talking and ask people to comment with regards to "interest" in


-Brian McNamara (lorgon_at_[hidden])

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