Ok, so, just to be clear - this has nothing to do with default assignment? That said, it's probably intentional that there's no verb form of =: (or =.). For example, given
is=: 4 :'(x)=:y' consider: 'abc' is"0 i.3 4 5 Questions: (1) what is a+b+c (2) how is this useful? Thanks, -- Raul On Tue, Jul 11, 2017 at 12:53 PM, 'Pascal Jasmin' via Programming <[email protected]> wrote: > Don't fixate on just Henry's syntax or default values. > > The basic "delegated function assignment" is: > > assign =: 4 : '(x) =: y' > > its a verb, that can be composed with others (or rewritten for a > different/enhanced delegated assignment function) in a wide variety of ways > that include all of the discussed applications in this thread. > > problem 1: can only use =: not =. > > problem 2: performance issue in any "delegated function assignment" that > wouldn't (or might not) exist if there were verb (and adverb forms I > proposed) forms of copula. > I've just repeated previous statements entirely here. Perhaps the mistake I > made was not providing an ideal example to your first request. > > ________________________________ > From: Raul Miller <[email protected]> > To: Programming forum <[email protected]> > Sent: Tuesday, July 11, 2017 12:37 PM > Subject: Re: [Jprogramming] Request for comments: multiple assignment > > > > 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 > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
