Closures/Value capture: Difference between revisions

Content added Content deleted
(Add Logtalk implementation)
Line 542: Line 542:
window.alert(funcs[3]()); // alerts "9"
window.alert(funcs[3]()); // alerts "9"
</script></lang>
</script></lang>

=={{header|Logtalk}}==
The example that follow uses Logtalk's native support for lambda expressions.
<lang logtalk>
:- object(value_capture).

:- public(show/0).
show :-
integer::sequence(1, 10, List),
meta::map(create_closure, List, Closures),
meta::map(call_closure, List, Closures).

create_closure(Index, [Double]>>(Double is Index*Index)).

call_closure(Index, Closure) :-
call(Closure, Result),
write('Closure '), write(Index), write(' : '), write(Result), nl.

:- end_object.
</lang>
Output:
<lang text>
| ?- value_capture::show.
Closure 1 : 1
Closure 2 : 4
Closure 3 : 9
Closure 4 : 16
Closure 5 : 25
Closure 6 : 36
Closure 7 : 49
Closure 8 : 64
Closure 9 : 81
Closure 10 : 100
yes
</lang>


=={{header|Maple}}==
=={{header|Maple}}==