From: Doug Kirk <dbkirk@gmail.com>
To: Ocaml <caml-list@inria.fr>
Subject: Re: [Caml-list] (Mostly) Functional Design?
Date: Mon, 18 Jul 2005 12:17:17 -0500 [thread overview]
Message-ID: <E08F1740-08C4-4931-9CCD-8ACABB2A0E99@gmail.com> (raw)
In-Reply-To: <42DBCA16.3000002@barettadeit.com>
First, since this thread was started by somebody asking for ideas on
learning FP, I can site a couple of printed resources that have
helped me, but none are written using Ocaml:
"Haskell School of Expression", Hudak, ISBN 0-52164-4089
"Algorithms: A Functional Programming Approach", Rabhi, Lapalme, ISBN
0-20159-6040
"Structure & Interpretation of Computer Programs", Sussman, Abelson,
Sussman, ISBN 0-26269-2201
With regard to the mailing lists, I've found that the Haskell list
has a higher percentage of general FP information than the Ocaml
list. It's almost as if the Haskellers are the theoretic bunch, and
the Ocamlers are the applied-technology bunch. (see disclaimer at
bottom)
On Jul 18, 2005, at 10:26 AM, Alex Baretta wrote:
> This does not justify a
> large scale attempt to catalog all FP "design patterns" in a single
> book.
Large scale? Was not "Design Patterns" originally a Ph.D. thesis? I
wouldn't call that "large scale". It just so happens that the work
was very helpful in a practical application for the programming
community at large to describe things that were already being done
(see below). So much so that it remains a bestseller in the
programming world.
<rant>
Unfortunately, what I see today is that too much emphasis is placed
on the GoF patterns; many coming out of college and into the "real
world" now see those as the entire toolbox, instead of simply a
collection of tools that may or may not apply.
</rant>
> These ideas are more general coding strategies requiring a specific
> design from the programmer, rather than parametrized design patterns
> abstracting from the (absence of) cognitive abilities of the
> programmer.
Yet before "Design Patterns" was released, I used those patterns in
my day-to-day design activities. It's just that nobody had catalogued
(formalized) them. I even used them while coding in C, as any good
programmer wanting to maximize maintainability of code would soon
learn to do.
So for me at least, the DP book was a formal description of what I
had already been doing, which I would call "general coding
strategies". However, having the book formalize the commonly-used
paradigms raised the level of thinking in the entire (OO) programming
community, even for programmers that hadn't had the opportunity to
informally discover the techniques themselves.
In the OO world, it is common now to speak of a design as an
application of one or more of the patterns; if somebody listening
doesn't understand a mentioned pattern, he can simply be directed to
"look it up" so that progress on the design may continue. The point
here being that speaking in patterns is a communication short-cut
describing widely understood and accepted concepts. For instance,
when you say "Indefinite recursion through tail call optimization",
what does that mean? What is required to accomplish it? What resource
is available that describes this and the others that you listed and
the requirements for achieving each of them? If your answer is
graduate school, then FP is doomed to the sidelines of the mainstream.
Having a resource such as that *is* a valuable tool that enables
novices to raise their level of thinking, and even more so,
understanding, of the environment in which they are operating. (The
danger of having the resource without experience is pointed out in
the rant above...it may be easy for novices to see it as the entire
toolbox.)
For myself, I've been lurking on this list for awhile, and trying to
learn FP practices using Ocaml. Since I have 3 mouths to feed, I must
spend most of my time doing work that clients are willing to pay
for...the last 9 years that means Java. So the lack of resources to
learn FP/Ocaml seriously affects my ability to start using it for
anything "real".
I am not so much interested in Ocaml as I am FP (I chose to look more
closely at Ocaml over Haskell because of the results of the ICFP
challenges, and because of some comments on the Haskell list).
Generally, I am dissatisfied with OO (as I was with structured
programming before it) as a methodology for solving mid- to large-
scale problems (essentially they are the same methodology; OO just
localizes the structures). I am looking to find a way to advance the
state of the art of problem-solving software systems ("languages").
<disclaimer>
All of the preceding is simply my opinion based upon my own
observations and experience. It is not intended to incite controversy.
</disclaimer>
Cheers,
--doug
next prev parent reply other threads:[~2005-07-18 17:17 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2005-07-14 18:00 Kyle Consalus
2005-07-18 7:59 ` [Caml-list] " Robert Morelli
2005-07-18 9:22 ` Alex Baretta
[not found] ` <42DB78D3.7010401@andrej.com>
2005-07-18 10:01 ` Alex Baretta
2005-07-18 18:15 ` Robert Morelli
2005-07-18 18:45 ` Alex Baretta
2005-07-18 18:56 ` padiolea
2005-07-18 19:19 ` Jon Harrop
2005-07-18 19:38 ` Jon Harrop
2005-07-18 21:27 ` skaller
2005-07-18 21:55 ` Alwyn Goodloe
2005-07-18 22:16 ` Paul Snively
2005-07-19 0:45 ` Jonathan Bryant
2005-07-18 21:37 ` skaller
2005-07-18 22:00 ` Kenneth Oksanen
2005-07-18 9:29 ` Mark Meyers
2005-07-18 9:56 ` Large scale and FP (was: Re: [Caml-list] (Mostly) Functional Design?) David MENTRE
2005-07-18 18:11 ` Large scale and FP Robert Morelli
2005-07-18 14:08 ` [Caml-list] (Mostly) Functional Design? james woodyatt
2005-07-18 16:37 ` Alwyn Goodloe
2005-07-18 14:21 ` alphablock
2005-07-18 15:26 ` Alex Baretta
2005-07-18 15:38 ` alphablock
2005-07-18 17:17 ` Doug Kirk [this message]
2005-07-18 18:14 ` Alex Baretta
2005-07-19 7:42 ` james woodyatt
2005-07-19 9:35 ` Robert Morelli
2005-07-19 16:53 ` james woodyatt
2005-07-19 17:13 ` Paul Snively
2005-07-19 23:58 ` Jon Harrop
2005-07-20 0:29 ` Paul Snively
2005-07-18 18:23 ` padiolea
2005-07-18 19:45 ` Gerd Stolpmann
2005-07-18 22:16 ` skaller
2005-07-19 0:48 ` Chris Campbell
2005-07-19 20:14 ` Some Clarifications Robert Morelli
2005-07-20 6:18 ` [Caml-list] " Ville-Pertti Keinonen
2005-07-24 0:04 ` Robert Morelli
2005-07-24 2:30 ` Paul Snively
2005-07-24 7:37 ` Alex Baretta
2005-07-24 8:08 ` Robert Morelli
2005-07-24 12:23 ` David Teller
2005-07-24 18:29 ` skaller
2005-07-24 18:51 ` Paul Snively
2005-07-24 12:42 ` Gerd Stolpmann
2005-07-25 7:23 ` Ville-Pertti Keinonen
2005-07-20 7:34 ` David MENTRE
2005-07-27 15:37 ` Robert Morelli
2005-07-27 20:33 ` skaller
2005-07-27 23:48 ` Paul Snively
2005-07-20 16:28 ` Damien Doligez
2005-07-24 14:51 ` Robert Morelli
2005-07-24 16:11 ` David MENTRE
2005-07-25 12:21 ` Damien Doligez
2005-07-25 15:47 ` Richard Jones
2005-07-22 5:18 ` [Caml-list] (Mostly) Functional Design? Marius Nita
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=E08F1740-08C4-4931-9CCD-8ACABB2A0E99@gmail.com \
--to=dbkirk@gmail.com \
--cc=caml-list@inria.fr \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox