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}}== |