I do not see yet that it would be even possible to do that in a way that takes advantage of in place assignment optimization. The default mechanism only kicks in when no value was being assigned, and it seems to me that cases where you can meaningly have "no value was being assigned so we need a default" already have complexity which defeats the in place assignment optimization.
Worse, though, is that this does not seem like a common case (which suggests that it's best not to optimize for it). That said, if we're not going to be dealing with code examples (and I certainly cannot think of any - the requirements seem contradictory), and we are going to continue discussing this, perhaps we should move to the chat forum? That said, here's a hypothetical non-example based on Henry's initial post: 'L(0)'=: L,y For that default value (0) to be relevant, the expression (L,y) must be undefined. But if y were undefined the statement would fail with an error. And if y were defined and the statement does not fail with an error, then that default of (0) can never be used. Which takes me back to my previous thought which was that taking advantage of in place optimizations for this default seems impossible. So... once again... what are you talking about? Thanks, -- Raul On Tue, Jul 11, 2017 at 10:48 AM, 'Pascal Jasmin' via Programming <[email protected]> wrote: > > > > assignment within a delegated function includes default values, handling > unassigned names, and other applications. Although update can be a "delegated > assigment function" append is more relevant to default values. > > Even if there are just a few "general applications" to delegated assignment, > "other applications" count. I mentioned append rather than update as a > better example of using default values, but update is still a delegatable > assignment function. Instead of default values, it uses the "C pattern" u}= > 'name' ... another general feature mentioned in this thread. > > > ________________________________ > From: Raul Miller <[email protected]> > To: Programming forum <[email protected]> > Sent: Tuesday, July 11, 2017 10:17 AM > Subject: Re: [Jprogramming] Request for comments: multiple assignment > > > > In every definition of default assignment that I have seen, update is > not supported, does not make sense, and is not implemented. > > So that is what I am asking about: How does it make sense to optimize > for the impossible case? > > Thanks, > > -- > Raul > > > On Tue, Jul 11, 2017 at 10:07 AM, 'Pascal Jasmin' via Programming > <[email protected]> wrote: >> fields can often have default values other than null... relevant more to >> append than update. >> >> But this is more of a comment on "assignment within a delegated function" >> family of processes, which is what =:: and =.. essentially propose. >> >> For a different proposal of a "string dsl" for default values and type >> restrictions/coercions, than what Henry is hinting towards: >> >> https://github.com/Pascal-J/type-system-j >> >> Though it avoids using an assignment function. >> >> >> ________________________________ >> From: Raul Miller <[email protected]> >> To: Programming forum <[email protected]> >> Sent: Tuesday, July 11, 2017 9:46 AM >> Subject: Re: [Jprogramming] Request for comments: multiple assignment >> >> >> >> How can update assignment be relevant when assigning default values? >> >> Thanks, >> >> -- >> Raul >> >> >> On Tue, Jul 11, 2017 at 9:43 AM, 'Pascal Jasmin' via Programming >> <[email protected]> wrote: >>> pretty much any use of =: >>> >>> (newrec ;reclookup) update assignwith 'database' >>> >>> >>> >>> ________________________________ >>> From: Raul Miller <[email protected]> >>> To: Programming forum <[email protected]> >>> Sent: Tuesday, July 11, 2017 9:36 AM >>> Subject: Re: [Jprogramming] Request for comments: multiple assignment >>> >>> >>> >>> In what sort of cases are in-place optimizations a relevant issue for >>> assigning default values? >>> >>> Thanks, >>> >>> -- >>> Raul >>> >>> >>> On Tue, Jul 11, 2017 at 9:06 AM, 'Pascal Jasmin' via Programming >>> <[email protected]> wrote: >>>> The way I handle that, >>>> >>>> assignwithC >>>> 2 : 0 >>>> (y) =: u (y~ [ ]) :: (n"_) 1 >>>> : >>>> (y) =: x u (y~ [ ]) :: (n"_) 1 >>>> ) >>>> >>>> >>>> I think the call for =:: and =.. is based on 2 things. >>>> >>>> 1. Although defaults and "ORvals"/unassigned default values can be >>>> handled easily enough through J expressions, for 805 anyway, it lost any >>>> inplace optimizations. >>>> >>>> 2. it only works for =: and not =. >>>> >>>> >>>> >>>> ________________________________ >>>> From: Marshall Lochbaum <[email protected]> >>>> To: [email protected] >>>> Sent: Tuesday, July 11, 2017 4:02 AM >>>> Subject: Re: [Jprogramming] Request for comments: multiple assignment >>>> >>>> >>>> Does this scheme support easily assigning a default value to a variable, >>>> that is, assigning only if the name is currently unused? This is a >>>> common case for me and I'm just now realizing that the "default" option >>>> doesn't really do that. >>>> >>>> See https://github.com/mlochbaum/JSound/blob/master/wav.ijs for an >>>> example, where I'm forced to write an awkward line of code to set the >>>> default format to 16-bit 44.1kHz. This seems easy enough to support with >>>> another trailing character on the name, like ^ or ?. So I would write >>>> 'FMT? F?' =: 1 16;44100 >>>> instead of the current version. >>>> >>>> On a side note, Earl Grey is a good language to look at if you are >>>> interested in more sophisticated assignment schemes. I don't know if >>>> much of it is relevant to J, but it's very cool to see what can happen >>>> if you build a language to handle pattern matching from the bottom up. >>>> See http://www.earl-grey.io/doc.html, up to the section on pattern >>>> matching. >>>> >>>> Marshall >>>> >>>> On Tue, Jul 04, 2017 at 01:40:52AM -0400, HenryRich wrote: >>>>> Here is a feature that I have wanted for a long time: >>>>> >>>>> http://code.jsoftware.com/wiki/System/Interpreter/Requests#Expanded_Multiple_Assignment >>>>> >>>>> It attempts to solve the problem of moving verb arguments into >>>>> variable-names. Allows defaults and multilevel arguments. I will >>>>> implement >>>>> this within a month or so, so get your comments in ASAP. >>>>> >>>>> Henry Rich >>>>> >>>>> --- >>>>> This email has been checked for viruses by AVG. >>>>> http://www.avg.com >>>>> >>>>> ---------------------------------------------------------------------- >>>>> For information about J forums see http://www.jsoftware.com/forums.htm > >> >>> >>>> >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>>> ---------------------------------------------------------------------- >>>> For information about J forums see http://www.jsoftware.com/forums.htm >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >>> ---------------------------------------------------------------------- >>> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
