Browse thread
[Caml-list] tail call optimization
[
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: | Dustin Sallings <dustin@s...> |
| Subject: | Re: [Caml-list] tail call optimization |
On Nov 18, 2003, at 21:40, Aleksey Nogin wrote: > On 18.11.2003 21:24, Dustin Sallings wrote: > >> Specifically, I've got an ``iter_lines'' function I'd like to >> turn into a ``fold_lines'' function that looks something like this (a >> few different functions for different things): >> let rec fold_lines f init_value ch = >> try >> let v = f (input_line ch) init_value in >> fold_lines f v ch >> with End_of_file -> init_value; > > My guess is that because the recursive call is inside the "try", the > function is not really tail recursive. > > May be the following will work: > > let rec fold_lines f init_value ch = > match > try > Some (f (input_line ch) init_value) > with End_of_file -> None > with > Some v -> fold_lines f v ch > | None -> init_value Well, this does work, but I don't really like it. How expensive is the match? It seems to me that the try call shouldn't be relevant since the return value comes from the bottom of it. -- SPY My girlfriend asked me which one I like better. pub 1024/3CAE01D5 1994/11/03 Dustin Sallings <dustin@spy.net> | Key fingerprint = 87 02 57 08 02 D0 DA D6 C8 0F 3E 65 51 98 D8 BE L_______________________ I hope the answer won't upset her. ____________ ------------------- 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