ASPN ActiveState Programmer Network
ActiveState
/ Home / Perl / PHP / Python / Tcl / XSLT /
/ Safari / My ASPN /
Cookbooks | Documentation | Mailing Lists | Modules | News Feeds | Products | User Groups


Recent Messages
List Archives
About the List
List Leaders
Subscription Options

View Subscriptions
Help

View by Topic
ActiveState
.NET Framework
Open Source
Perl
PHP
Python
Tcl
Web Services
XML & XSLT

View by Category
Database
General
SOAP
System Administration
Tools
User Interfaces
Web Programming
XML Programming


MyASPN >> Mail Archive >> boost
boost
[boost] Re: FC++: formal review
by David Abrahams other posts by this author
Mar 1 2004 2:19PM messages near this date
Re: [boost] Re: FC++: formal review | Re: [boost] Re: FC++: formal review
Joel de Guzman <joel@[...].com>  writes:

>  Hi,
> 
>  I vote to accept FC++ into boost.
> 
>  I've had the watch fc++ from its early beginnings. I have a
>  more-or-less deeper understanding of the library. It's a fact that
>  FC++, and especially the so called "functional programming" paradigm
>  has influenced my preferred style of coding.

Mine too.

>  Functional programming is gaining acceptance. The C++ community is
>  moving ever so deeper into FP stemming from the "STL-style"
>  paradigm. Spirit is conceptually a collection of parser and semantic
>  actions, both of which are purely const function objects in the FC++
>  sense.  In FP, and in FC++, this set of parsers are called "parser
>  combinators".  Coupled with a way to combine (compose) these
>  function objects to form a whole, we have a very important paradigm.
> 
>  This style of programming is not limited to parsing. Indeed, the
>  most powerful strategy for controlling complexity is 1) to have a
>  set of primitive elements [axioms] 2) A means of combination 3) The
>  means of abstraction. FP is just a means to tackle complexity in
>  these terms. We might be confused with high-priest sounding terms
>  such as currying, lambda, monads, closures, continuations, etc. ad
>  nauseaum, but really, those are means to tackle no. 3 above:
>  abstraction-- how to make complex systems act like they are just
>  like any other primitive

That's "interoperability".  Very important.**

>  in order to make still more complex systems. Equally important are 1

Well, without primitives, where would we sophisticates be? ;-)

>  and 2.

Sure, you have to have a way to put primitives together into programs.

>  When reviewing a language (yes, FC++ *is* a language, or more
>  particularly, an EDSL--embedded domain specific language; sure
>  Spirit is also an EDSL), I analyze it based on the three points I
>  listed above.

The problem, as I see it, is that we already have a DSEL (sorry, I've
never seen the "Embedded" placed first) for functional programming in
Boost.Lambda that's terser, arguably easier to read, and whose idioms
fit more closely with other Boost FP systems (bind, mpl), and existing
C++ programming paradigms.

>  Not surprisingly, FC++ passes those three points-- it's based on
>  haskell!
> 
>  The FP paradigm is a cool idea. Let's have more of it. 

Absolutely.  I don't want *anyone* to take these comments too
seriously, because I have **not** inveseted the thought that a formal
review requires.  As I see it, FP is a great approach; using it helps
me to manage complex systems by keeping data immutable and by giving
me a framework through which to view programming problems (like the
STL does).  FC++ is certainly an interesting study in DSEL design.  If
we're going to accept another functional programming language, it
ought to justify itself in terms of expressivity or applicability to
the problems faced by C++ programmers.  I don't have a strong opinion
on whether FC++ meets those criteria, but I haven't seen the clear
evidence to the affirmative that I'd normally expect by this point in
a review.

-Dave

(**) Monads, OTOH, seem to be a means to tackle the complexity that
strict purity introduces in systems that would be more natural with
mutable data and deterministic execution order.

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


_______________________________________________
Unsubscribe & other changes: http://lists.boost.org/mailman/listinfo.cgi/boost
Thread:
Gennadiy Rozental
Peter Dimov
Matthew Vogt
Brian McNamara
Gregory Colvin
David Abrahams
Joel de Guzman
Gennadiy Rozental
Brian McNamara
Joel de Guzman

Privacy Policy | Email Opt-out | Feedback | Syndication
© ActiveState Software Inc. All rights reserved