Sure. It will serve as a good place for discussion of ideas. On Thu, Oct 9, 2014 at 4:09 PM, Andrei Berceanu <[email protected]> wrote:
> Ah ok, I read that as if keywords were the solution to my problem, but > alas, no. Are there any design plans for this? Should I open an issue? > > //A > > On Thursday, October 9, 2014 10:05:26 PM UTC+2, Stefan Karpinski wrote: >> >> The Options package was developed before keywords existed. >> >> On Thu, Oct 9, 2014 at 4:02 PM, Andrei Berceanu <[email protected]> >> wrote: >> >>> Tim, what do you mean by "people have moved away from it now that we >>> have keywords"? In my example I do use keywords (in fact that is the only >>> thing I use), notice the ";" at the begining of each function argument list. >>> >>> //A >>> >>> >>> On Thursday, October 9, 2014 9:33:00 PM UTC+2, Tim Holy wrote: >>>> >>>> While people have moved away from it now that we have keywords (for >>>> some good >>>> reasons), the Options.jl package might be worth a look in this specific >>>> case. >>>> >>>> --Tim >>>> >>>> On Thursday, October 09, 2014 03:14:52 PM Stefan Karpinski wrote: >>>> > Yes, this is a major problem, but I'm not sure what the fix is. It's >>>> a >>>> > serious language design issue and I'm not aware of any languages that >>>> have >>>> > good solutions. >>>> > >>>> > On Thu, Oct 9, 2014 at 3:09 PM, Andrei Berceanu <[email protected]> >>>> >>>> > >>>> > wrote: >>>> > > I often find myself passing long lists of parameters from one >>>> function to >>>> > > another. A simple, contrived example would be the following >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > *function fun3(; kw1 = 1, kw2 = 2, kw5 = 8, kw6 = 4) fun2(; kw1 >>>> = kw1, >>>> > > kw2 = kw2)endfunction fun2(; kw1 = 1, kw2 = 2) fun1(; kw1 = kw1, >>>> kw2 = >>>> > > kw2)endfunction fun1(; kw1 = 1, kw2 = 2, kw3 = 3) kw1 + kw2 + >>>> > > kw3end*This results in code which is not easy to maintain. Notice >>>> that >>>> > > kw1 and kw2 are common to all 3 functions. Is there a way to pass >>>> the two >>>> > > of them (or more!) automatically? The way the code is written now, >>>> if I >>>> > > decide I want kw3 of fun1 to be changeable from fun3, I need to >>>> change >>>> > > the code in various places (in bold) -- very bug prone: >>>> > > >>>> > > *function fun3(; kw1 = 1, kw2 = 2, kw5 = 8, kw6 = 4* >>>> > > *, kw3=3) fun2(; kw1 = kw1, kw2 = kw2* >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > >>>> > > *, kw3=kw3)endfunction fun2(; kw1 = 1, kw2 = 2, kw3=3) fun1(; >>>> kw1 = >>>> > > kw1, kw2 = kw2, kw3=kw3)endfunction fun1(; kw1 = 1, kw2 = 2, kw3 = >>>> 3) >>>> > > kw1 + kw2 + kw3end* >>>> > > Tnx, >>>> > > //A >>>> >>>> >>
