Boost logo

Boost :

From: David Abrahams (dave_at_[hidden])
Date: 2003-07-22 22:22:09


Brian McNamara <lorgon_at_[hidden]> writes:

> I have posted the first "boostified" version of FC++ to the YahooGroups
> files section; it is called "fcpp".
> http://groups.yahoo.com/group/boost/files/
>
> ----------
> Background
> ----------
> 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
> - a lambda sublanguage, with syntax for lambda, let, letrec,
> do-notation, and monad comprehensions
>
> Much of the documentation for FC++ can be found at
> http://www.cc.gatech.edu/~yannis/fc++/
> and the rest appears linked from
> http://www.cc.gatech.edu/~yannis/fc++/New1.5/
> (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++).

The biggest problem I have always had with FC++ is that the material
documenting it is too hard for me to read.

Would you mind giving some background for those of us not versed in FP
terminology? From looking at your webpage, even the tutorial
introductions seem to assume knowledge of the term "functoid" and
"polymorphic function" (please give *complete* definitions). Also, I
know the docs are going to discuss "2nd order polymorphic functions"
at some point, if I can get that far. Please define that too.

I am familiar with most of the other terms in your "Background"
section above, but not all of them. I'm pretty sure some other people
are less familiar than I am with this stuff. I think you'd get a lot
more responses if you could flesh out some of the ideas in a less
terminology-laden way.

-- 
Dave Abrahams
Boost Consulting
www.boost-consulting.com

Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk