[GAP Forum] Lexical closures
Stephen Linton
steve.linton at st-andrews.ac.uk
Thu Apr 16 23:26:58 BST 2015
This seems rather complicated compared to
MakeF2 := function(q)
return x-> x+q:
end;
Then you can use
f0 := MakeF2(10);
f1 := MakeF2(20);
Does this do what you need?
Steve
On 16 Apr 2015, at 23:19, Luca Giuzzi <luca.giuzzi at gmail.com> wrote:
>
> Dear Forum,
> is there a canonical way in gap to generate lexical closures for functions?
> The best I could come up with is something like
>
> MakeF:=function ()
> local q;
> q := ValueGlobal( "q" );
> return function(x)
> return x+q;
> end;
> end;
>
> which captures the value of the global value of q, so that
> q:=10; f0:=MakeF();
> q:=20 f1:=MakeF();
> gives
> f0(0)=10 and f1(0)=20
> and it "sort of works" (and, at least for the cases I have in mind it
> might be enough)
> Still, I am asking if there might a better (or canonical) way to implement this?
>
> Regards,
> luca
>
> _______________________________________________
> Forum mailing list
> Forum at mail.gap-system.org
> http://mail.gap-system.org/mailman/listinfo/forum
More information about the Forum
mailing list