Jensen's Device: Difference between revisions

Content added Content deleted
(→‎{{header|J}}: local assignment, spacing, lang tags)
(Added Oz example.)
Line 297: Line 297:
Printf.printf "%f\n" (sum' i 1 100 (fun () -> 1. /. float !i))</lang>
Printf.printf "%f\n" (sum' i 1 100 (fun () -> 1. /. float !i))</lang>
Output: 5.187378
Output: 5.187378

=={{header|Oz}}==
Translation using mutable references and an anonymous function:
<lang oz>declare
fun {Sum I Lo Hi Term}
Temp = {NewCell 0.0}
in
I := Lo
for while:@I =< Hi do
Temp := @Temp + {Term}
I := @I + 1
end
@Temp
end
I = {NewCell unit}
in
{Show {Sum I 1 100 fun {$} 1.0 / {Int.toFloat @I} end}}</lang>

Idiomatic code:
<lang oz>declare
fun {Sum Lo Hi F}
{FoldL {Map {List.number Lo Hi 1} F} Number.'+' 0.0}
end
in
{Show {Sum 1 100 fun {$ I} 1.0/{Int.toFloat I} end}}</lang>


=={{header|Perl}}==
=={{header|Perl}}==