Wrapping 0 :0 in an explicit verb should be possible: getnoun=:3 :'0 :0' $getnoun'' 1 2 3 4 5 6 ) 12
It's also possible to do this tacitly, but yeah, doing it tacitly such that it triggers when a verb is executed would be tricky (possible, but overly verbose to accomplish). Also, not sure if that would have any uses... Personally, I rarely even bother using the predefined (noun define) cover for this. The raw 0 :0 form is actually rather convenient. Thanks, -- Raul On Fri, Feb 12, 2016 at 2:03 PM, Matthew Baulch <[email protected]> wrote: > Ok. That explains things well. So the the line(s) containing : behave just > as if : is an everyday conjunction. It's the lines AFTER : that are treated > specially. > > I suppose that's quite a clear design. I'll re-read the documentation. Like > you say, once I know what's going on, these subtle points are more likely > to stand out. > > ". does indeed have unlimited potential—over the domain of character arrays > anyway. I'm trying to wrap this construction in a verb so I can obtain > these multi-line definitions without explicitly calling ". . Just for > feelings of purity. It doesn't seem like this can be accomplished tacitly. > I'm starting to think that 0:0 has to appear in each definition, and so > defining such a verb may not be possible. Oh well. > > Thanks. : makes sense now. > On 12 Feb 2016 2:11 pm, "Henry Rich" <[email protected]> wrote: > >> > Forgive me if I'm wrong, but I don't see a discussion of 'expressions to >> the >> > right of zero' (such as '-.LF' in '0 : 0 -. LF') >> > in either of your links. >> >> No. But that isn't surprising when you understand what's going on. >> >> 0 : 0 creates a noun. >> >> Because conjunctions are executed before verbs, >> >> 0 : 0 -. LF >> >> is the same as >> >> (0 : 0) -. LF >> >> (0 : 0) creates a noun that can be used just as any other noun is used. >> You can add to it, subtract from it, execute it... The (-. LF) has nothing >> to do with the execution of (:). What I'm saying is, if you are OK with >> something like >> >> ".;._2 (0 : 0) >> >> [which feeds the result of (0 : 0) into a verb], you should ipso facto be >> OK with >> >> (0 : 0) -. LF >> >> which also feeds that result into a verb, just from the left this time. >> >> The (:) in (0 : 0) is executed WHEN (:) IS EXECUTED, i. e. at the >> appropriate time during the parse [see NuVoc for explanations]. After (:) >> has read its fill, execution of the sentence continues. So, you can have >> >> (0 : 0) ,&(".;._2) (0 : 0) >> >> 1 2 3 >> >> ) >> >> 10 20 30 >> >> 40 50 60 >> >> 70 80 90 >> >> ) >> >> 10 20 30 >> >> 40 50 60 >> >> 70 80 90 >> >> 1 2 3 >> >> >> Two (0 : 0) in one sentence [the parentheses are not required]! and >> executed right-to-left. >> >> >> >> (".) has unlimited potential, but often is put to mundane use. When I was >> starting with J I felt a frisson of daring when I used it, but now it's >> just another verb to me. >> >> >> Henry Rich >> >> >> >> >>> I'd welcome any correction. >>> >>> Cheers. >>> It's pretty well explained at >>> >>> http://code.jsoftware.com/wiki/Vocabulary/NounExplicitDefinition >>> >>> The question is, How would you know to read that? Suggestions welcomed. >>> >>> When you say "expression following the 0", I'm not sure which 0 you mean. >>> >>> : is the all-purpose entity creator; the left 0 says 'create a noun', and >>> the right >>> 0 says 'make that noun from the upcoming lines of input'. >>> >>> Full details are spelled out in several pages starting at >>> http://code.jsoftware.com/wiki/Vocabulary/cor >>> >>> Henry Rich >>> >>> >>> On 2/11/2016 12:55 AM, Matthew Baulch wrote: >>> >>> Thanks everyone. This (let's say) creative use of 0 : 0 makes sense to me >>>> now. I wonder if it's an accidental consequence of the implementation >>>> that >>>> allows an expression following the 0, or whether it's a deliberate design >>>> decision. Either way, it makes sense to have it documented. Can't see it >>>> in >>>> NuVoc or the Dictionary. Of course, I may have overlooked it. >>>> >>>> Honestly, to obtain something simple like multi-line noun definitions, ". >>>> does seem like quite a heavy-handed tool. It does work however, so I >>>> probably shouldn't grumble. >>>> >>>> Cheers. >>>> >>>> On Wed, Feb 10, 2016 at 10:29 PM, Matthew Baulch <[email protected]> >>>> wrote: >>>> >>>> Looking at this more closely now. I'm a bit puzzled about the use of -. >>>> >>>>> here. Obviously this is used here in dyadic form. In x -. LF the LF >>>>> characters are, of course, removed from x. What is the x here? I have >>>>> seen >>>>> that it works--not doubting that. Just trying to work out how. Sorry. >>>>> There's probably something obvious I've missed. >>>>> >>>>> On Wed, Feb 10, 2016 at 12:52 AM, Raul Miller <[email protected]> >>>>> wrote: >>>>> >>>>> If you do not have good names for partial calculations, that might be >>>>> >>>>>> a sign that you need to think a bit more about the abstractions you >>>>>> are using. It can be difficult for other people to read if you don't >>>>>> make sufficient effort to label your abstractions. >>>>>> >>>>>> Also, I would note that your 'c0' is not a combinator, as you are not >>>>>> using its dyadic definition. So you might want to use a different name >>>>>> for that one. Perhaps: >>>>>> >>>>>> v0=:c0 >>>>>> >>>>>> That said, if you really want to execute really long lines, you can do >>>>>> that using ". 0 :0-.LF and indented text. (You need the indentation >>>>>> because line feeds will not separate words here.) >>>>>> >>>>>> For example: >>>>>> >>>>>> myStruct=: ". 0 :0-.LF >>>>>> v0 p0 c1 p1 c2 p2 c3 p3 c4 p4 c5 p5 c6 p6 c7 p7 c8 p8 c9 p9 >>>>>> c10 p10 c11 p11 c12 p12 c13 p13 c14 p14 c15 p15 c16 p16 c17 >>>>>> p17 c18 p18 c19 p19 c20 p20 c21 p21 c22 p22 c23 p23 c24 p24 >>>>>> c25 p25 c26 p26 c27 p27 c28 p28 c29 p29 c30 p30 >>>>>> ) >>>>>> >>>>>> I hope this helps, >>>>>> >>>>>> -- >>>>>> Raul >>>>>> >>>>>> On Tue, Feb 9, 2016 at 4:59 AM, Matthew Baulch <[email protected]> >>>>>> wrote: >>>>>> >>>>>> Suppose I wish to construct a complex, non-regular deeply nested >>>>>>> >>>>>>> structure: >>>>>> >>>>>> to model some inherently non-linear system. A natural approach (for me, >>>>>>> anyhow) is to construct a library of combinators, or a domain specific >>>>>>> language, with which to specify the (boxed) structure. >>>>>>> >>>>>>> J rises easily to the task, and before long I'm looking at long >>>>>>> function >>>>>>> trains of the form >>>>>>> >>>>>>> myStruct =: c0 p0 c1 p1 c2 p2 ... cN pN >>>>>>> >>>>>>> where the ci are (combinator) verbs, and the pj are (parameter) nouns. >>>>>>> Nice. Easy. >>>>>>> >>>>>>> Only trouble is, N may be large and J prefers such statements to sit >>>>>>> on >>>>>>> >>>>>>> a >>>>>> >>>>>> single line. Correct? I can split my definition: >>>>>>> >>>>>>> msPartA =. ..... >>>>>>> msPartB =. ..... >>>>>>> ..... >>>>>>> msPartX =. ..... >>>>>>> myStruct =: msPartA msPartB .... msPartX >>>>>>> >>>>>>> though this feels awkward. The most obvious issue is that the PartA, >>>>>>> >>>>>>> ..., >>>>>> >>>>>> PartX are distracting; unless of course I can find a natural way of >>>>>>> splitting and naming them. Ideally, the parts should be as close to a >>>>>>> comfortable line width as possible. Again, awkward. If myStruct1 and >>>>>>> myStruct2 have the same partitioning scheme but myStruct2 (for >>>>>>> >>>>>>> instance) is >>>>>> >>>>>> much larger than myStruct1, there will be many sparsely, or many >>>>>>> overpopulated lines. Awkward too. >>>>>>> >>>>>>> I love J. It handles complex regular data so elegantly. How can I >>>>>>> bring >>>>>>> similar elegance to irregular data? Can my combinators be rescued, or >>>>>>> should I use another approach? >>>>>>> ---------------------------------------------------------------------- >>>>>>> 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
