Boost logo

Boost :

From: David Bergman (davidb_at_[hidden])
Date: 2004-03-01 23:53:32


Ok, I am an FP guy, since the mid 80's. I love Haskell and the way I can
formalize problems in Haskell (and similar frameworks.)

I have *not* used FC++ before.

Off to the review.

What is your evaluation of the design?
--------------------------------------

The design follows Haskell, and the Prelude library, quite well. Most things
are there.

It is hard to abstract Haskell, and FP in general, from the picture. I.e.,
to judge the design from a non-FP point of view. An attempt would probably
yield the design to be awkard.

The names are a bit weird.

First of all, I do not like "functoid" since it is often used as a synonym
to "function object or regular function, i.e., anything that can be
applied."

Second, the "direct", "indirect" and "full" classifications of functoids do
not reveal their meaning to me. Especially not "full functoid."

I would love to see a "lazy_function" and "lazy_list," actually. Or, go the
"closure" route in terminology and viewpoint. I.e., make the "laziness"
explicit, since it is *not* a (wanted or not) side effect of a non-strict
semantics, as some hard-core FPers view the world.

I view the functoids of FC++ as closures, capable of acting as functions of
any arity, i.e., partially currable.

Judgment: awkward from a C++ point of view and bad names for the
constituents. True to The Original, though ;-)

What is your evaluation of the implementation?
----------------------------------------------

The implementation is very good. The best of C++ meets the best of Haskell.

What is your evaluation of the documentation?
---------------------------------------------

Much better than most people have argued. At least for an FP aficionado.

What is your evaluation of the potential usefulness of the library?
-------------------------------------------------------------------

The potential is great, but it *is* a complete framework, i.e., you either
buy the whole package or nothing. This is quite non-Boostish. I would love
to see parts of it create new libraries that can integrate with Boost, such
as "lazy_list" or "closure" (functoid.)

I would love to use it, but I know that I would then have to abandon "C++"
for that project and buy into "FC++." The upside of having FC++ part of
Boost would be that I can "legally" use it in my projects, where the
customer allows for Boost ;-)

Did you try to use the library? With what compiler? Did you have any
problems?
----------------------------------------------------------------------------

----
Yes, I tried it with VC 7.1, and had no problems.
How much effort did you put into your evaluation? A glance? A quick reading?
In-depth study?
----------------------------------------------------------------------------
----------------
In-depth study, but did unfortunatley not have time to code that much
against the framework.
Are you knowledgeable about the problem domain? 
-----------------------------------------------
Yes, very.
Do you think the library should be accepted as a Boost library?
---------------------------------------------------------------
This is a hard one. I would love to use, and give some feedback to, FC++. I
do not see how it fits in the Boost suite, though. It is too "functional"
;-) Seriously, it is too much of a monolithic framework.
Judgment: I think FC++ should *not* be accepted.

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