On 11/6/07, Erik de Castro Lopo <mle+ocaml@mega-nerd.com> wrote:
Christopher L Conway wrote:
On 11/6/07, Brian Hurt <bhurt@janestcapital.com> wrote:
Also, creating a lazy thunk in Ocaml is expensive (like 140+ clock cycles),
while passing an argument into a function is cheap- and the common case will
be that the argument won't need to be evaluated, just passed in.
What does this mean? Did OCaml become non-strict while I wasn't looking?
Ocaml is strict by default and optionally lazy.
The code being discussed was this:
log (lazy (Printf.printf "%s" (awfully_long_computation ())))
where everything inside
(lazy X)
is lazy evaluated.
Yes, of course. But, if I understand correctly, Brian was arguing in favor of
Printf.ifprinf "%s" (awfully_long_computation ())
and claiming that it was potentially more efficient than the lazy version.
No, I was arguing that: