What would this Associative adverb do? Also, can this approach be made to usefully invoke (+/!.0) ?
Thanks, -- Raul On Tue, Jan 10, 2023 at 1:12 PM 'Pascal Jasmin' via Programming <programm...@jsoftware.com> wrote: > > There is after all a Conjunction approach that permits ambivalent u verb, > and so for attributes that current native J code could leverage, it would be > possible to have full functionality of (A n) suggestion. > Dn =: 2 : 'v u ]' NB. dyadic with x as n or monadic with [: as v > +/"1 0 (Dn 2 3) i.5 NB. or natural xy order: 2 3 (+/"1 0 Dn ) i.5 > 2 3 > > 3 4 > > 4 5 > > 5 6 > > 6 7 > > +/"0 1 Dn 2 3 ] i.5 > 2 3 4 5 6 > > 3 4 5 6 7 > > > > > +/"0 1 Dn [: i.5 > > 10 > > this would let you/us decorate a verb as: (where Associative is an adverb) > (Dn Associative)((Dn Associative) [:) NB. Monad only u Or ((Dn > [:)Associative) or just Associative((u Dn) Associative) NB. ambivalent fixed > u, but monad needs [: in x position. > Decorating a noun requires a conjunction, but is still possible: (where > Sorted is a conjunction) > (Sorted data) NB. adverb instead noun that was data. > where Sorted that does nothing (to modify/choose implementation of u) can be: > Sorted =: APPLY =: 2 : ' u n' > > u Sorted data -: u (Sorted data) NB. for monad u > > + Sorted 3 > > 3 > > (u Dn) (Sorted Data) NB. dyad u > > 2 (+ Dn) (Sorted 3) > > 5 > > > 2 (i.~ Dn) (Sorted (i.5)) > 2 > > 2 (i.~ Dn) Sorted (i.5) > > 2 > > > findfirstsorted =: (i.~ Dn) Sorted ]: NB. ACA > > > 2 findfirstsorted (i.5) NB. presumed sorted without "data attribute" > > 2 > > findfirstAttributeSorted =: (i.~ Dn) NB. real function might optimize > implementation of i. but delegation requires lookahead not part of > interpreter. > > > 3 findfirstAttributeSorted (Sorted (i.5)) > > 3 > > The case for (A n) is that it would designate a special decorated noun that > because it is special can be peeked inside of (the adverb) to determine the > decoration, and then when a verb is applied, the proper verb implementation > suited to the decoration can be chosen. It is also a bit more flexible to > implement decorations either as (u A) or (A n) for any A. > on a different note, reusing D. and D: could be > D. =: 2 : 'v u ]' NB. Dn above, but v is any ambivalent verb or [: . u~ D. v > is dyadic compose with y as 2nd x: ie. becomes ] u v. Also monadic hook.D:=: > 2 : '[ u v' NB. dyadic compose with repeated x, or monadic hook > > On Tuesday, January 10, 2023 at 10:35:16 a.m. EST, 'Pascal Jasmin' via > Programming <programm...@jsoftware.com> wrote: > > > S. > I was going to suggest some foreign equivalent to S. But this approach is > sufficient. A: (for (A)ssociative declaration) would be another candidate. > if A: (or a foreign adverb) were used for this. u S. could be a > declaration/hint that the y argument to u is in sorted order. > plus =: + A: NB. or + S. > becomes a "decorated verb" without creating an "attribute system" that would > be completely new to J. > One way to add attributes to data would be a new train: > A n : adverb where: u (A n) -> (uA n) : (x uA n) > Though this can already be done with a conjunction, so the case for a new > train seems dubious. Except that both a conjunction and this new adverb > train "eat y" argument to produce a noun, which is somewhat unusual, and then > that "specialness" can perhaps justify a new train. Another issue with > conjunction approach is that if u is forced monadic only, then x&u loses the > ability to apply dyadic rank to u. If u is forced to be dyadic only, then a > conjunction must be a "triple modifier" (return an adverb), where say [: > would apply uCn, and a noun would apply m uC n (where m is final 3rd > parameter). > (A n) would decorate nouns intuitively such that data =: (A data) when used > as y argument allows "transparent use" where > u (A n) -: (uA) y x (uA) y -: x u (A n) > > even when (A n) is decorating/attributing a noun, it is saying "apply all > verbs to this noun as uA" where A would typically be a giant switch/case. > statement that chooses among implementations of u. Even if Associative > "decorator" applies to verbs rather than data, Unique, Sorted would typically > attribute data. But "user" decorations like Dictionary, RaggedArray would > define the structure of a noun such that built in J operators can be > overriden to "understand the data structure". DataIsChunkable can be an > adverb that splits the data into chunks and applies u in threads on each > chunk, then optionally unpixes them, though that is more likely to be a verb > annotation than data annotation. > One complication, or possibly elegance, of (A n) is how to handle: > (A n) A > where u (A n) -> (uA n) : (x uA n), is treating n as a y argument to uA > (A1 n) A2 would be an adverb train that defers computation until u is > provided instead of treating (A1 n) as the m argument to A2. example: > newdata =: [x] u ((Sorted data) ApplySortedIfSorted) > would make newdata either a simple noun or (Sorted newdata) "decorated > noun". ApplySortedIfSorted becomes an adverb applied after u (Sorted data) is > applied and produces a noun result. You can even define the noun data > interchangeably with the adverb: > ((data Sorted) ApplySortedIfSorted) > and use it interchangeably with verbs that would treat data as their y > argument. > > On Tuesday, January 10, 2023 at 12:10:17 a.m. EST, Elijah Stone > <elro...@elronnd.net> wrote: > > My preference is to allow the user to specify what transformations they would > like to permit the implementation to perform in what contexts, as recommended > by ieee 754 (sec 10.4). Perhaps an adverb S., such that [x] u S. y applies u > with strict fp semantics. Or perhaps a function attribute, specified in > similar manner to associativity (howsoever that is specified). > > On Mon, 9 Jan 2023, Marshall Lochbaum wrote: > > > Well, true, I'm not in favor of rearranging +/ either. The dangers of > > floating point don't include nondeterminism, unless you make them. > > > > However, I also think matrix products have it worse. Numbers with widely > > varying exponents are a bit of an edge case. But when you're multiplying > > a few large matrices together they can show up naturally, so I expect > > it's not so rare to have a product that's numerically stable in one > > direction and not in the other. > > > > Marshall > > > > On Mon, Jan 09, 2023 at 05:52:34PM -0600, Omar Antolín Camarena wrote: > >> But that's just normal floating non-associativity. It happens even for > >> addition of "integers": > >> > >> 1 + (_1e19 + 1e19) > >> 1 > >> (1 + _1e19) + 1e19 > >> 0 > >> > >> People using floating point are probably aware of the dangers or at least > >> should be. > >> > >> -- > >> Omar > >> ---------------------------------------------------------------------- > >> 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