:-use_module(library(lambda)).
closure :-
numlist(1,10, Lnum),
maplist(make_func, Lnum, Lfunc),
maplist(call_func, Lnum, Lfunc).
make_func(I, \X^(X is I*I)).
call_func(N, F) :-
call(F, R),
format('Func ~w : ~w~n', [N, R]).