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: | 2003-11-19 (05:24) |
From: | Dustin Sallings <dustin@s...> |
Subject: | [Caml-list] tail call optimization |
I read something on the list about how a function may be tail recursive, but not be compiled with tail call optimization. What kinds of things might cause this? 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; ;; So, I have these other two functions: let operate_on_file f fn = let ch = open_in fn in try let rv = f ch in close_in ch; rv with x -> close_in ch; raise x ;; let fold_file_lines f init_value fn = operate_on_file (fold_lines f init_value) fn ;; I now want to count the lines in a file: dustinti:~/prog/eprojects/snippets/ocaml/lib 586% wc -l numbers 4769526 numbers # Fileutils.fold_file_lines (fun x y -> y + 1) 0 "numbers";; Stack overflow during evaluation (looping recursion?). Am I doing something wrong? -- 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