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.