How to get functional software engineering experience?

Jeffrey Palmer jeffrey.palmer@acm.org
Wed, 15 May 2002 10:18:30 -0500


On Tuesday 14 May 2002 07:22 pm, Andrew J Bromage wrote:
> On the other hand, it's an exciting time to do engineering in
> declarative languages, because we can invent the design patterns and
> discover what the good habits are as we go along.

This is very interesting to me, as I have a great deal of experience appl=
ying=20
and documenting patterns in object-oriented environments.

=46rom the research I've done to date, functional programming provides en=
ough of=20
a paradigm shift that there are significant new patterns/idioms (you choo=
se=20
the lingo) that need to be documented.*  I can think of several off of th=
e=20
top of my head:

- Tying the knot
- Phantom types
- Appropriate use of strictness in data structures
- The excellent techniques used in Edison for parameterization
Etc.

With that in mind, I'd be interested in starting such a documentation pro=
ject. =20
And by this I mean something more formal than the existing Wiki, perhaps =
in=20
hyperlinked/book form.  In this way, you could download a bunch of patter=
ns=20
with good example code, and get a head start on understanding proven=20
approaches for structuring systems, etc.

So, if you have any patterns, or better yet, source code that demonstrate=
s an=20
approach or technique, please send them my way.  I will put something=20
together on this in the next couple of weeks, and let everyone know where=
 to=20
find it.  And, if there are no objections, I'll probably harvest some fro=
m=20
the Wiki and various other papers that have them buried beneath formalism=
s. =20
:)

If anyone has any suggestions, I'd love to hear them.

Regards,

=09- j

* To avoid any pattern debates: I personally believe that patterns are=20
especially useful for getting novices up to speed on concepts that might =
not=20
be readily apparent at first glance.  Rather than treating patterns as=20
anything "special" in their own right, for me they're simply a really=20
convenient way of teaching people new and interesting concepts.

--=20
The river is moving.
The blackbird must be flying.