Mailing list for all users of the OCaml language and system.
 help / color / mirror / Atom feed
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
  


  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