Version française
Home     About     Download     Resources     Contact us    
Browse thread
Re: [Caml-list] really HO Functions
[ Home ] [ Index: by date | by threads ]
[ Search: ]

[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
Date: -- (:)
From: Seth J. Fogarty <sfogarty@g...>
Subject: Re: [Caml-list] really HO Functions
On Sat, 2 Oct 2004 02:33:43 -0400, John Prevost <j.prevost@gmail.com> wrote:
> On Sat, 2 Oct 2004 08:02:52 +0300, Radu Grigore <radugrigore@gmail.com> wrote:
> > I am learning OCaml now. The last two-three days I've written a small
> > prototype; then I have reviewed it and one of the observations was
> > that it contains no second-order function.
> >
> > Possible reasons:
> > 1. higher order functions are hard (intellectually unmanageable)
> > 2. HOFs are not needed in practice above a certain order
> > 3. failure to recognize places where a HOF is needed (beyond the
> > standard examples in tutorial).
> >
> > Number 3 was what prompted me to ask the question: a few examples
> > always help. Unfortunately I didn't yet had time to read the cited
> > articles :(.
> 
> I highly recommend keeping at it and joining the beginners list (if
> you haven't already).  Making and using higher-order (as in 2nd or
> 3rd, at least) functions is one of those things that you start doing
> after you've been using a functional language for a while.  It does
> dramatically simplify your life when you start doing it, but it's not
> immediately obvious how you'll use it.

I've identified two places I've used HOF's, for really rather different reasons.
1) Modularity. This is probably obvious, but the hardest one to do,
and probably the more useful location. I rarely use more than
second-order functions for htis, and it is very often a refactoring.
"Oh look, in this parser we are evaluating, unwrapping ints, and
error-checking in eight places, the only difference is the function we
apply to the integers afterwards. Time for an HOF."

2) Abstraction. These are places I could have hard-coded the functions
I ended up passing in, but didn't so that the algorithm was very
obvious in the code. This allows someone to look at that one chunk of
code and go "alright, so that's the algorithm. How the specifics work
I don't know, but the general overview is independent of the rest of
the code". This may just be me, and is certainly NOT the usual use of
HOFs.

-- 
Seth Fogarty             sfogarty@[gmail.com|rice.edu|livejournal]
Neep-neep at large    AIM: Sorrath
"I know there are people in this world who do not love their fellow
human beings - and I hate people like that" --Tom Lehrer.

-------------------
To unsubscribe, mail caml-list-request@inria.fr Archives: http://caml.inria.fr
Bug reports: http://caml.inria.fr/bin/caml-bugs FAQ: http://caml.inria.fr/FAQ/
Beginner's list: http://groups.yahoo.com/group/ocaml_beginners