Nested function: Difference between revisions

added ocaml
(J draft)
(added ocaml)
Line 120:
return 0;
}</lang>
 
=={{header|OCaml}}==
 
<lang ocaml>let make_list separator =
let counter = ref 1 in
 
let make_item item =
let result = string_of_int !counter ^ separator ^ item ^ "\n" in
incr counter;
result
in
 
make_item "first" ^ make_item "second" ^ make_item "third"
 
let () =
print_string (make_list ". ")
</lang>
Interestingly, on my computer it prints the numbers in reverse order, probably because the order of evaluation of arguments (and thus order of access of the counter) is undetermined:
{{out}}
<pre>
3. first
2. second
1. third
</pre>
 
=={{header|Perl}}==
Anonymous user