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