Browse thread
Re: [Caml-list] really HO Functions
-
Jean-Baptiste Rouquier
-
Radu Grigore
-
John Prevost
- Seth J. Fogarty
-
John Prevost
-
Radu Grigore
[
Home
]
[ Index:
by date
|
by threads
]
[ Message by date: previous | next ] [ Message in thread: previous | next ] [ Thread: previous | next ]
[ 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