On Mon, Oct 1, 2018 at 8:58 AM Simon King <[email protected]> wrote:
>
> Hi Dima,
>
> On 2018-09-30, Dima Pasechnik <[email protected]> wrote:
> > it was written before optional parameters era in GAP, as far as I know.
> > Anyhow, you can use GAP's PushOptions() and PopOptions() to achieve more or
> > less
> > the same effect, with a big uglier syntax.
>
> "Uglier" only internally. I think it shouldn't be too difficult to
> modify libgap's functions so that optional parameters (passed in the
> usual pythonic way) are first pushed and eventually popped from GAP's
> global optional value stack.
Right, this can all be hidden, and perhaps even implemented with
a decorator (or in some other way?), to avoid manual coding of Push/Pop calls.
Thanks for pointing this out.
>
> When I first saw your work-around, I though it would have ugly side-effects.
> But I just realise that it wouldn't change GAP's behaviour. For instance:
>
> gap> test := function()
> > local foo;
> > foo := ValueOption("foo");
> > Print(foo);
> > end;
> function( ) ... end
> gap> f := function()
> > local foo;
> > foo := ValueOption("foo");
> > Print("Original value ",foo);
> > test();
> > end;
> function( ) ... end
> gap> f();
> Original value failfail
> gap> f(:foo:=5);
> Original value 55
>
> Note that the option set when calling the outer function is also present
> in the inner function, and that's the same when directly pushing to the
> global option stack:
>
> gap> PushOptions(rec(foo:=5));
> gap> f();
> Original value 55
> gap> PopOptions();
> gap> f();
> Original value failfail
>
> So, that would work as desired.
Indeed, GAP manual says in its Sect 4.11-2 "Function Call With Options"
that the options syntax is exactly equivalent to using Push/Pop explicitly.
Best,
Dima
>
> Best regards,
> Simon
>
> --
> You received this message because you are subscribed to the Google Groups
> "sage-support" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to [email protected].
> To post to this group, send email to [email protected].
> Visit this group at https://groups.google.com/group/sage-support.
> For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups
"sage-support" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/sage-support.
For more options, visit https://groups.google.com/d/optout.