I am sure that you "can produce examples of these forms where the arguments are not referred to explicitly in the sentence(s) that represent the function being defined." However, when you were "hearing rumblings from other people" the representations questioned were (see, http://www.jsoftware.com/pipermail/programming/2015-December/043676.html),
cam 2 : ' u 5!:1<''v''' Am 1 : ' u cam' I do know but arguments seem to be "referred to explicitly." Am I missing something? Were you referring to other rumblings from other people instead? On Sat, Feb 13, 2016 at 7:34 PM, Raul Miller <[email protected]> wrote: > http://www.jsoftware.com/papers/TacitDefn.htm > > "The predominant form of function definition in APL is explicit in the > sense that the arguments are referred to explicitly in the sentences > that represent the function being defined." > > I can produce examples of these forms where the arguments are not > referred to explicitly in the sentence(s) that represent the function > being defined. I imagine that those cases could be thought of as > tacit. > > For example: > > meanie=: 1 :0 > +/ % # > ) > > But of course, if you mean tacit in some different sense, the rules change. > > -- > Raul > > > On Sat, Feb 13, 2016 at 7:21 PM, Jose Mario Quintana > <[email protected]> wrote: > > The expression noun define (0 : 0) is meant to produce (ultimately) a > > noun. However, monad define (3 : 0), dyad define (4 : 0), adverb define > (1 > > : 0) and conjunction define (2 : 0) produce verbs, adverbs and > > conjunctions; are these (the products) tacit? > > > > Paraphrasing a certain colorful crafty politician: I do not know but > people > > say, or imply, they are explicit; very smart people tell me they are not > > tacit; I do not know but... ;) > > > > > > On Fri, Feb 12, 2016 at 6:47 PM, Raul Miller <[email protected]> > wrote: > > > >> That's simpler than what I was thinking of. > >> > >> And that does satisfy my concept of tacit programming, though I think > >> I remember hearing rumblings from other people that this kind of thing > >> is not tacit. (Actually, if tacit means "no use of names" then the 3 > >> :'0 :0' definition would also be tacit.) > >> > >> Thanks, > >> > >> -- > >> Raul > >> > >> > >> On Fri, Feb 12, 2016 at 6:18 PM, Jose Mario Quintana > >> <[email protected]> wrote: > >> > getnoun=. ".@:('0 : 0'"_) > >> > > >> > $getnoun'' > >> > 1 2 3 > >> > 4 5 6 > >> > ) > >> > 12 > >> > > >> > > >> > On Fri, Feb 12, 2016 at 2:41 PM, Raul Miller <[email protected]> > >> wrote: > >> > > >> >> 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 > >> >> > >> > ---------------------------------------------------------------------- > >> > 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
