What I am looking for are the formal design methods and tools
supporting those methods that lead one through the task
of decomposing a problem (possibly specified in a requirements
document) into a design that can be used as the starting point
for coding with a functional language. The documentation
should not only cover the engineering task of (using generic terms)
top-level-design, intermediate-design, detailed-design,
unit-coding&test, test&integration,
requirements-testing&sell-off, etc, but also how one
manages such a project.
Good question. Both Erlang and Natural Expert have been widely used
in industry, and both have training courses that cover at least some
of what you want. For a quick intro to these, see
www.cs.bell-labs.com/~wadler/topics/recent.html#angry
and follow the pointers from there. (This paper also contains just
what you don't want, a list of serious applications of FP. :-)
Your quote represents what I suspect is a widely held view.
"... functional approaches do not permit you to create
an abstract notion of system state that can be modeled.
Functional languages are great for people to think about
problems (especially recursion), but they are no good for
large software systems. It's not that people haven't looked
at them in this context; they don't work."
This claim is belied by the success of Erlang and Natural Expert.
Also, there are scores of functional programs containing over 50K
lines. While not large in software engineering terms, these go well
beyond merely being used to `think about problems (especially
recursion)'. If the quote is not confidential, I'd appreciate if
you could give a source for it.
Yours, -- P
-----------------------------------------------------------------------
Philip Wadler [EMAIL PROTECTED]
Bell Laboratories http://www.cs.bell-labs.com/~wadler
Lucent Technologies office: +1 908 582 4004
600 Mountain Ave, room 2T-402 fax: +1 908 582 5857
Murray Hill, NJ 07974-0636 USA home: +1 908 626 9252
-----------------------------------------------------------------------