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

Reply via email to