Hi Raul, Believe me, I am not trying to do anything unnecessarily elaborate. I just want to run the operator consistently in both directions.
Also, I don't know that I am properly expressing myself with the terminology. Ak On Tue., Aug. 15, 2023, 07:51 Raul Miller, <rauldmil...@gmail.com> wrote: > I think the inconsistency here is that you're thinking of a rather > elaborate parsing system used by some other language. > > Brief overview of J's parser: A sentence is parsed first by tokenizing > it (left to right), then the resulting array of tokens is passed to a > shift/reduce parser (right to left). Conversion of numbers from > "sequence of characters" to "1 or more numbers" happens during > tokenization. Verbs execute during the shift/reduce stage. > > See also https://www.jsoftware.com/help/dictionary/dicte.htm > > -- > Raul > > On Tue, Aug 15, 2023 at 12:56 AM Ak O <akin...@gmail.com> wrote: > > > > The problem is that the use of the operator is made inconsistent. > > > > The operator (dyad) cannot be used reliably in a defined function. > > > > The dyad doesn't map to the monad. > > > > > > Ak > > > > > > On Mon., Aug. 14, 2023, 21:01 Henry Rich, <henryhr...@gmail.com> wrote: > > > > > My advice: learn to live with the quotes. > > > > > > You need a way to write a string that represents a long value. In J, > > > that's 'longvaluex'. > > > > > > Henry Rich > > > > > > On 8/14/2023 10:57 PM, Ak O wrote: > > > > Hi Henry, > > > > > > > > Yes actually all I want is a verb that stting encloses an argument. > > > > After that I can attach ('.@,&'x') and have my extended type object. > > > > > > > > The difference between the two functions is that the second functions > > > > requires quotes about the 'y' to runs correctly. > > > > The first function does not require quotes as it looks for keyboard > input > > > > to complete the execution correctly. > > > > > > > > > > > > Ak > > > > > > > > On Mon., Aug. 14, 2023, 20:01 Henry Rich, <henryhr...@gmail.com> > wrote: > > > > > > > >> ". string > > > >> > > > >> executes the string. But it is a string, i. e. a literal. If you > want > > > >> that literal to contain a character string for execution, you must > > > >> enclose that string in quotes. You can write a verb to do it. > > > >> > > > >> Henry Rich > > > >> > > > >> > > > >> On 8/14/2023 9:14 PM, Ak O wrote: > > > >>> Is there a more simple way of feeding the interpreter? > > > >>> > > > >>> Meaning, is there some invisible trigger like a CR or a LF > (unprintable > > > >>> characters) > > > >>> that is recognized by the interpreter as coming from the > > > >>> keyboard? > > > >>> > > > >>> There must be since, typing numbers only, physically on the > keyboard > > > and > > > >>> hitting enter runs the program correctly. > > > >>> > > > >>> > > > >>> Ak > > > >>> > > > >>> > > > >>> > > > >>> On Mon., Aug. 14, 2023, 17:43 Raul Miller, <rauldmil...@gmail.com> > > > >> wrote: > > > >>>> There's two ways of accomplishing what I think you are asking for. > > > >>>> > > > >>>> (1) Modify the J interpreter, or > > > >>>> > > > >>>> (2) Modify the J IDE. > > > >>>> > > > >>>> You could modify the interpreter such that large integers are > treated > > > >>>> as extended integers. (This might be a worthwhile change at some > point > > > >>>> in the future. The reasoning here would be that if the user has > typed > > > >>>> in all those digits, presumably they are significant.) > > > >>>> > > > >>>> You could modify the J IDE (to automatically add the trailing 'x' > on > > > >>>> long sequences of digits followed by a space). This would be > > > >>>> considerably less desirable (since it could mess up literal text). > > > >>>> > > > >>>> The remaining option is to hit that 'x' key, yourself. > > > >>>> > > > >>>> I hope this makes sense, > > > >>>> > > > >>>> -- > > > >>>> Raul > > > >>>> > > > >>>> On Mon, Aug 14, 2023 at 4:43 PM Ak O <akin...@gmail.com> wrote: > > > >>>>> Hi Raul, > > > >>>>> > > > >>>>> Yes I think I understood Henry's message. This why my thought is > to > > > >>>> simulte > > > >>>>> the keyboard input. Since typing the raw input into the first > > > function > > > >>>>> works exactly as desired. I want rather to substitute escaping > to the > > > >>>>> keyboard for feeding the input as keystrokes. > > > >>>>> > > > >>>>> I don't know enough about stdin and keyboard reads to know the > > > >> different > > > >>>>> triggers. > > > >>>>> > > > >>>>> Are there some bytes that the keyboard triggers that > > > >>>>> interpreter recognizes? > > > >>>>> > > > >>>>> If the analogy is writing/reading a file, can i get the bytes of > each > > > >>>> digit > > > >>>>> and go from there? > > > >>>>> > > > >>>>> Is there better was for me to think about this? Probably. > > > >>>>> But, I know that if a keyboard can do it, I can simulate a > keyboard > > > >>>> doing > > > >>>>> it. > > > >>>>> > > > >>>>> I must be able to run that track without needing to escape the > > > >> function. > > > >>>>> > > > >>>>> :) > > > >>>>> > > > >>>>> Ak > > > >>>>> > > > >>>>> > > > >>>>> > > > >>>>> On Mon., Aug. 14, 2023, 13:30 Raul Miller, < > rauldmil...@gmail.com> > > > >>>> wrote: > > > >>>>>> I think you should re-read Henry's message that you were > responding > > > to > > > >>>>>> here. > > > >>>>>> > > > >>>>>> By the time any J function can run, it's already too late. > > > >>>>>> > > > >>>>>> -- > > > >>>>>> Raul > > > >>>>>> > > > >>>>>> On Mon, Aug 14, 2023 at 12:58 PM Ak O <akin...@gmail.com> > wrote: > > > >>>>>>> What expression allows a function to recieve an argument 'y' > as a > > > >>>> literal > > > >>>>>>> without using quotes? > > > >>>>>>> > > > >>>>>>> Below are two deficient functions. > > > >>>>>>> The size of the vector is given by 'x'. The permutation > > > >>>>>>> index is meant to be given by 'y'. > > > >>>>>>> > > > >>>>>>> My intention is treat 'y' as a literal, without needing to use > > > >>>> quotes on > > > >>>>>>> the input. > > > >>>>>>> > > > >>>>>>> This first function works by escaping to the keyboard for input > > > >>>>>>> I would like rather for the function to receive the input from > the > > > >>>> raw > > > >>>>>>> argument and not have to escape to the keyboard. > > > >>>>>>> > > > >>>>>>> Desired Input > > > >>>>>>> 30 extd 180548043269214561950911457875657 > > > >>>>>>> Rather than > > > >>>>>>> 30 extd '180548043269214561950911457875657' > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> This function is deficient by its operating sequence. > > > >>>>>>> It escapes to keyboard, which preservs the literal type. > > > >>>>>>> > > > >>>>>>> extd =: 4 : 0 > > > >>>>>>> n=. ((1!:1) 1 > > > >>>>>>> ((".@,&'x' n)) A. i. x > > > >>>>>>> ) > > > >>>>>>> > > > >>>>>>> 30 extd 180548043269214561950911457875657 > > > >>>>>>> > > > >>>>>>> Keyboard input (if this approach makes sense, can the keyboard > > > >>>> input be > > > >>>>>>> simulated by using y as the feed?) > > > >>>>>>> 180548043269214561950911457875657 > > > >>>>>>> > > > >>>>>>> Result > > > >>>>>>> 20 12 4 29 7 17 22 11 2 27 28 23 6 21 9 3 24 10 26 13 15 1 18 > 8 25 > > > >>>> 19 0 5 > > > >>>>>>> 16 14 > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> Alternative deficient function by the input form. > > > >>>>>>> Yields the correct result but uses quotes in the input. > > > >>>>>>> > > > >>>>>>> extdquotes =: 4 : 0 > > > >>>>>>> ((".@,&'x' n)) A. i. x > > > >>>>>>> ) > > > >>>>>>> > > > >>>>>>> 30 extdquotes '180548043269214561950911457875657' > > > >>>>>>> > > > >>>>>>> Result > > > >>>>>>> 20 12 4 29 7 17 22 11 2 27 28 23 6 21 9 3 24 10 26 13 15 1 18 > 8 25 > > > >>>> 19 0 5 > > > >>>>>>> 16 14 > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> I am looking for the function that uses the input for extd that > > > >>>> delivers > > > >>>>>>> the result of extdquotes > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> Thank you for your help > > > >>>>>>> Ak > > > >>>>>>> > > > >>>>>>> > > > >>>>>>> On Sat., Aug. 12, 2023, 13:43 Henry Rich, < > henryhr...@gmail.com> > > > >>>> wrote: > > > >>>>>>>> It's like this: > > > >>>>>>>> > > > >>>>>>>> /long-number/ is a single word. If the length is <19 digits, > it > > > >>>> is an > > > >>>>>>>> integer, otherwise a float (which necessarily has only 16 > digits > > > of > > > >>>>>>>> precision). > > > >>>>>>>> > > > >>>>>>>> /long-number/x is a single word, but it is always an extended > > > >>>> integer, > > > >>>>>>>> and every digit of /long-number/ is preserved. > > > >>>>>>>> > > > >>>>>>>> x: /number/ is two words. /number/ is evaluated first, and > then > > > >>>> x: is > > > >>>>>>>> applied to its value to give an extended integer. > > > >>>>>>>> > > > >>>>>>>> In that last case, if /number/ has more than 19 digits, it > will > > > >>>> have > > > >>>>>>>> been represented as a float, and the extended integer will > have > > > >>>> only 16 > > > >>>>>>>> digits of precision. > > > >>>>>>>> > > > >>>>>>>> Henry Rich > > > >>>>>>>> > > > >>>>>>>> On 8/12/2023 3:25 PM, Ak O wrote: > > > >>>>>>>>> My thought was that 'x' must always be extended by > definition. > > > >>>>>>>>> > > > >>>>>>>>> I was trying to think what cases this operator's 'x' argument > > > >>>> would > > > >>>>>> not > > > >>>>>>>> be > > > >>>>>>>>> strictly extended. > > > >>>>>>>>> > > > >>>>>>>>> Chris demonstrated that the input 'x' in my example is float > by > > > >>>>>>>>> construction. > > > >>>>>>>>> > > > >>>>>>>>> Raul explained that the parser treats the number before it > > > >>>> treats > > > >>>>>> the > > > >>>>>>>>> operator ( if I have understood his message correctly). > > > >>>>>>>>> > > > >>>>>>>>> So if I have understood all of this correctly. As a raw > input, > > > >>>> it is > > > >>>>>> the > > > >>>>>>>>> extended representation of the float input 'x' that is > actually > > > >>>> what > > > >>>>>> is > > > >>>>>>>>> being operated on by A. to yield the result. > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> Ak > > > >>>>>>>>> > > > >>>>>>>>> > > > >>>>>>>>> On Sat., Aug. 12, 2023, 11:34 Henry Rich, < > henryhr...@gmail.com> > > > >>>>>> wrote: > > > >>>>>>>>>> I misunderstood your question. > > > >>>>>>>>>> > > > >>>>>>>>>> (x A. y) starts by verifying that (*./ (|x) < !.#y) and then > > > >>>>>> converts x > > > >>>>>>>>>> to a permutation with > > > >>>>>>>>>> (i.@-&.<: y) #: x > > > >>>>>>>>>> (all in extended precision if x is extended), followed by a > > > >>>> number > > > >>>>>> of > > > >>>>>>>>>> rotations within an index vector. It is much less work to > start > > > >>>>>> with > > > >>>>>>>>>> the permutation vector rather than the anagram index. > > > >>>>>>>>>> > > > >>>>>>>>>> Henry Rich > > > >>>>>>>>>> > > > >>>>>>>>>> On 8/11/2023 8:29 PM, Ak O wrote: > > > >>>>>>>>>>> For me, > > > >>>>>>>>>>> (x: y) > > > >>>>>>>>>>> does not preserve the input. > > > >>>>>>>>>>> > > > >>>>>>>>>>> The result I get is not the same. > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> ( x:180548043269214561950911457875657 ) > > > >>>>>>>>>>> 180548043269214573494164592263168 > > > >>>>>>>>>>> This does not work. > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> 180548043269214561950911457875657x > > > >>>>>>>>>>> 180548043269214561950911457875657 > > > >>>>>>>>>>> This does work. > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> > > > >>>>>>>>>>> On Fri., Aug. 11, 2023, 13:01 Henry Rich, < > > > >>>> henryhr...@gmail.com> > > > >>>>>>>> wrote: > > > >>>>>>>>>>>> (x: value) produces extended version of value. > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> Henry Rich > > > >>>>>>>>>>>> > > > >>>>>>>>>>>> On Fri, Aug 11, 2023, 2:44 PM Ak O <akin...@gmail.com> > wrote: > > > >>>>>>>>>>>> > > > >>>>>>>>>>>>> Hi everybody, I hope you are all well. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> I have a question about the Anagram ( A. ) operator. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> In a defined function, how do I designate that an input > 'x' > > > >>>> is > > > >>>>>>>>>> treatment > > > >>>>>>>>>>>>> as extended datatype rather than float? > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Where being defined: > > > >>>>>>>>>>>>> 13 : ' x A. i.y' > > > >>>>>>>>>>>>> [ A. [: i. ] > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> is to be taken as, > > > >>>>>>>>>>>>> 13 : 'X_INPUTx A. y' NB. 12345672345467x A. > i.y > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> How do I get the affect of catenating an 'x' to the end > of a > > > >>>>>> number > > > >>>>>>>> in > > > >>>>>>>>>> a > > > >>>>>>>>>>>>> defined function? > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> If you understand my question ignore below, otherwise I > give > > > >>>> an > > > >>>>>>>>>> example. > > > >>>>>>>>>>>>> Thank you for your thoughts. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Ak > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> My understanding of the Anagram operator (A.). > > > >>>>>>>>>>>>> The vocabulary reference page (acapdot) gives the > product of > > > >>>> the > > > >>>>>>>>>> Anagram > > > >>>>>>>>>>>>> index function > > > >>>>>>>>>>>>> A. y > > > >>>>>>>>>>>>> as datatype extended. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> The Anagram function > > > >>>>>>>>>>>>> x A. y > > > >>>>>>>>>>>>> applies the permutation map (x) on ordered vector > sequence > > > >>>> (y) > > > >>>>>> as > > > >>>>>>>>>> below. > > > >>>>>>>>>>>>> ] vector_sequence =: ?~30 > > > >>>>>>>>>>>>> 20 12 4 29 7 17 22 11 2 27 28 23 6 21 9 3 24 10 26 13 15 > 1 > > > >>>> 18 8 > > > >>>>>> 25 19 > > > >>>>>>>>>> 0 5 > > > >>>>>>>>>>>>> 16 14 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> ] vector_anagram =: A. vector_sequence > > > >>>>>>>>>>>>> 180548043269214561950911457875657 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> The Noun, vector_anagram will have datatype extended, > given > > > >>>> by: > > > >>>>>>>>>>>>> datatype vector_anagram > > > >>>>>>>>>>>>> extended > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Applying the vector_anagram on a vector using the > command: > > > >>>>>>>>>>>>> vector_anagram A. i.30 > > > >>>>>>>>>>>>> 20 12 4 29 7 17 22 11 2 27 28 23 6 21 9 3 24 10 26 13 15 > 1 > > > >>>> 18 8 > > > >>>>>> 25 19 > > > >>>>>>>>>> 0 5 > > > >>>>>>>>>>>>> 16 14 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> The expected result. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> In a case where the digits are input on there own, the > > > >>>> following > > > >>>>>>>> fails > > > >>>>>>>>>>>> with > > > >>>>>>>>>>>>> 'domain error, executing dyad A.' > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> 180548043269214561950911457875657 A. i.30 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> One approach is to place 'x:' before the input. > > > >>>>>>>>>>>>> ( x:180548043269214561950911457875657 )A. i.30 > > > >>>>>>>>>>>>> 20 12 4 29 7 17 22 11 2 27 28 25 1 8 0 15 16 14 3 5 19 > 26 18 > > > >>>> 6 > > > >>>>>> 21 23 > > > >>>>>>>> 13 > > > >>>>>>>>>>>> 24 > > > >>>>>>>>>>>>> 9 10 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> This is not the expected result. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> The input is treated as > 180548043269214573494164592263168. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> ( x:180548043269214561950911457875657 ) > > > >>>>>>>>>>>>> 180548043269214573494164592263168 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Not the input I thought I was applying. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> An alternative is to postfix an 'x' to the end of the > input. > > > >>>>>>>>>>>>> 180548043269214561950911457875657x A. i.30 > > > >>>>>>>>>>>>> 20 12 4 29 7 17 22 11 2 27 28 23 6 21 9 3 24 10 26 13 15 > 1 > > > >>>> 18 8 > > > >>>>>> 25 19 > > > >>>>>>>>>> 0 5 > > > >>>>>>>>>>>>> 16 14 > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> The expected result. But how do I achieve this for a > defined > > > >>>>>>>> function. > > > >>>>>>>>>>>>> Does not work either. > > > >>>>>>>>>>>>> ".@((":vector_anagram),x')"_ NB. same as x: > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Maybe there is a symbol that 13 : can be recognize to > > > >>>> trigger the > > > >>>>>>>>>>>> extended > > > >>>>>>>>>>>>> datatype. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Thank you for your help. > > > >>>>>>>>>>>>> > > > >>>>>>>>>>>>> Ak > > > >>>>>>>>>>>>> > > > >>>> > ---------------------------------------------------------------------- > > > >>>>>>>>>>>>> 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 > > > >> > > > > > ---------------------------------------------------------------------- > > > > 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