Jump to content

Closures/Value capture: Difference between revisions

Add Logtalk implementation
(Add Logtalk implementation)
Line 542:
window.alert(funcs[3]()); // alerts "9"
</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}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.