Jensen's Device: Difference between revisions

added standard ml
(restore Haskell implementation: a list comprehension is certainly more idiomatic, but it isn't call-by-name)
(added standard ml)
Line 252:
# it's almost as good as sum(1/i for i in range(1,101))
print (sum (i, 1, 100, lambda: 1.0/i.value))</lang>
Output: 5.18737751764
 
=={{header|Standard ML}}==
<lang sml>val i = ref 42 (* initial value doesn't matter *)
 
fun sum' (i, lo, hi, term) = let
val result = ref 0.0
in
i := lo;
while !i <= hi do (
result := !result + term ();
i := !i + 1
);
!result
end
 
val () =
print (Real.toString (sum' (i, 1, 100, fn () => 1.0 / real (!i))) ^ "\n")</lang>
Output: 5.18737751764
Anonymous user