Unfortunately "that logic would suggest that +/ is not a pure tacit verb
because it contains an adverb" might work for your notion of "pure tacit
verb" but certainly does not work for the notion I had in mind when I wrote
"producing (pure) tacit verbs." I meant pure tacit in the sense of pure:
"not mixed with anything else" or "containing nothing that does not
properly belong" or "free of any contamination [no offense]."
Who knows? Maybe your notion of a pure tacit verb could prevail and be
very convenient. For instance, if someone asks:
How can I make the verb load tacit?
One could answer:
You can make the verb load a pure tacit verb easily using the tacit
purifier adverb,
tp=. 1 : 0 NB. Beware of the line-wrapping...
A=. (''''' 1 : (''' , ] , ' y'' ; '':'' ;''x (u ] ' , ] , (') y'')')"_)
'(' , ((5!:5)<'u') , ')'
". 'A=. ' , A
A f.
)
puretacitload=. load tp
puretacitload'plot'
plot (1 + %:)^:(i.13) 0
You can can also make a tacit verb pure tacit,
pure_rd=. %tp NB. Pure tacit reciprocal divide
pure_rd 3
0.333333
2 pure_rd 3
0.666667
You can make pure_rd even more pure, and so on,
pure_pure_rd=. pure_rd tp
pure_pure_rd 3
0.333333
2 pure_pure_rd 3
0.666667
The pure pure tacitness of pure_pure_rd can be appreciated in all its
splendor,
pure_pure_rd
'' (1 : 0)
(pure_rd) y
:
x (u ] (pure_rd)) y
)
where
pure_rd
'' (1 : 0)
(%) y
:
x (u ] (%)) y
)
;)
On Mon, Jul 17, 2017 at 7:12 PM, Raul Miller <[email protected]> wrote:
> Given is=:1 :'(m)=:y'
>
> if we claim that ('abc' is) is not a "pure tacit verb" because it
> contains a non-tacit adverb, that logic would suggest that +/ is not a
> pure tacit verb because it contains an adverb. We can certainly say
> that +/ is a tacit verb, but it's not purely made of pure tacit
> verbs...
>
> ---
>
> As for the use of globals for arguments, pure tacitness seems even
> lower there, both because of the use of (globally) named arguments,
> and because of the introduction of a potential failure mode (where
> "unrelated" verb invocations can stomp on each other).
>
> Thanks,
>
> --
> Raul
>
>
>
> On Mon, Jul 17, 2017 at 6:56 PM, Jose Mario Quintana
> <[email protected]> wrote:
> > Exactly, you might have the right to say,
> >
> > "
> > And yet, all of your verbs can be pure tacit.
> >
> > For example, you could use
> >
> > is=:1 :'(m)=:y'
> > "
> >
> > but the verb,
> >
> > I_am_a_pure_tacit_verb=: '`u v' is
> >
> > fails,
> >
> > I_am_a_pure_tacit_verb +/`*:
> > |domain error: I_am_a_pure_tacit_verb
> > | (m) =:y
> >
> > because "the biggest problem here is the use of globals for arguments."
> > How come? Because the verb has an explicit appendage,
> >
> > I_am_a_pure_tacit_verb
> > '`u v' (1 : '(m)=:y')
> >
> > Despite its relative complexity and potential performance issues , I
> rather
> > use (while employing an official J interpreter) a tacit verb such as,
> >
> > nrep=: ('3!:2 a.{~' ,&": a. i. 3!:1) NB. :)
> > is=: ".@:('(' , nrep@:[ , ')=: ' , nrep@:]) f.
> >
> > because, in contrast, it "... quacks and swims like a duck..."
> >
> > is
> > ".@:('(' , ('3!:2 a.{~' ,&": a. i. 3!:1)@:[ , ')=: ' , ('3!:2 a.{~' ,&":
> a.
> > i. 3!:1)@:])
> >
> > '`u v' is +/`*:
> > ┌───────┬──┐
> > │┌─┬───┐│*:│
> > ││/│┌─┐││ │
> > ││ ││+│││ │
> > ││ │└─┘││ │
> > │└─┴───┘│ │
> > └───────┴──┘
> >
> > u@:v f.
> > +/@:*:
> >
> >
> >
> >
> > On Sun, Jul 16, 2017 at 3:37 PM, Raul Miller <[email protected]>
> wrote:
> >
> >> Sure, and the biggest problem here is the use of globals for arguments.
> >>
> >> The verbs themselves can be pure, but all we're really doing is
> >> rearranging the deck chairs.
> >>
> >> Thanks,
> >>
> >> --
> >> Raul
> >>
> >>
> >> On Sun, Jul 16, 2017 at 3:33 PM, Jose Mario Quintana
> >> <[email protected]> wrote:
> >> > At least we agree, I think, on one thing " in explicit programming
> >> > [typically] names refer to arguments while in tacit programming they
> do
> >> > not." Thus, is not just a matter of tacit aesthetics, there are some
> >> > consequences which might be difficult to evade:
> >> >
> >> > ('`u v') =: +/`*:
> >> > u@:v f.
> >> > +/@:*:
> >> >
> >> > ('`u v') =:: +/`*: NB. Jx
> >> > ┌───────┬──┐
> >> > │┌─┬───┐│*:│
> >> > ││/│┌─┐││ │
> >> > ││ ││+│││ │
> >> > ││ │└─┘││ │
> >> > │└─┴───┘│ │
> >> > └───────┴──┘
> >> > u@:v f.
> >> > +/@:*:
> >> >
> >> > ('`u v') is +/`*: NB.
> >> > |domain error
> >> > | (m) =:y
> >> > is
> >> > 1 : '(m)=:y'
> >> >
> >> > So, assuming I understood the intended use of your adverb is, I am
> >> afraid
> >> > your adverb cannot be used without typical limitations.
> >> >
> >> >
> >> >
> >> > On Sun, Jul 16, 2017 at 1:59 PM, Raul Miller <[email protected]>
> >> wrote:
> >> >
> >> >> I think you are trying to evade a basic issue, which is that the
> >> >> distinction between tacit and explicit programming is that in
> explicit
> >> >> programming names refer to arguments while in tacit programming they
> >> >> do not.
> >> >>
> >> >> Altering the implementation to come up with evasive ways of having
> >> >> named arguments is what's stinky, from my point of view.
> >> >>
> >> >> Thanks though,
> >> >>
> >> >> --
> >> >> Raul
> >> >>
> >> >>
> >> >> On Sun, Jul 16, 2017 at 12:13 PM, Jose Mario Quintana
> >> >> <[email protected]> wrote:
> >> >> > Nice try but when I am wearing my hard-core tacit programmer hat I
> do
> >> not
> >> >> > like to look at blatant ugly explicit definitions which are
> referring
> >> to
> >> >> > arguments. ;) Heck, I do not like the smell of verbs of this kind
> >> >> either,
> >> >> >
> >> >> > stinky=. ('''' , [ , '''' , a. {~ 38 40 52 32 58 39 40 120 41 61
> 58 32
> >> >> 121
> >> >> > 39 41"_) 128!:2 ]
> >> >> >
> >> >> > PS. Feel free to bring any argument suggesting that verbs involving
> >> side
> >> >> > effects are not tacit.
> >> >> >
> >> >> >
> >> >> > On Fri, Jul 14, 2017 at 6:46 PM, Raul Miller <
> [email protected]>
> >> >> wrote:
> >> >> >
> >> >> >> And yet, all of your verbs can be pure tacit.
> >> >> >>
> >> >> >> For example, you could use
> >> >> >>
> >> >> >> is=:1 :'(m)=:y'
> >> >> >>
> >> >> >> That said, there is an argument that side effects make a verb
> impure.
> >> >> But I
> >> >> >> am ignoring that kind of thing.
> >> >> >>
> >> >> >> Thanks,
> >> >> >>
> >> >> >> --
> >> >> >> Raul
> >> >> >>
> >> >> >> On Friday, July 14, 2017, Jose Mario Quintana <
> >> >> >> [email protected]>
> >> >> >> wrote:
> >> >> >>
> >> >> >> > That is a different matter.
> >> >> >> >
> >> >> >> > Indeed, "=: works and is simple" as long as one is not concerned
> >> about
> >> >> >> > producing (pure) tacit verbs. In that latter context,
> apparently,
> >> it
> >> >> >> does
> >> >> >> > not work well, is not simple to use and its forced use might
> >> trigger
> >> >> >> gross
> >> >> >> > space and time inefficiencies (for example, as discussed
> recently
> >> in
> >> >> the
> >> >> >> > "[Jprogramming] Side effects in tacit expressions" thread).
> >> >> >> >
> >> >> >> > Introducing new primitives is, in my view, a matter of
> perspective
> >> and
> >> >> >> > opportunity. I thought the verbs =.. and =:: had sufficient
> >> merits
> >> >> and
> >> >> >> I
> >> >> >> > had the means to include them in the version of the J
> interpreter
> >> >> that I
> >> >> >> > use almost all the time (Jx). I just thought this could be an
> >> >> >> opportunity
> >> >> >> > to make the official interpreter a little more tacit friendly
> for
> >> the
> >> >> >> > benefit of other tacit programming hard-core fans; that is all.
> >> >> >> >
> >> >> >> > In any case, there are other much more important unfortunate
> >> >> omissions,
> >> >> >> in
> >> >> >> > current official implementations, that drastically hinder tacit
> >> >> >> programming
> >> >> >> > (but that is yet another topic for another time).
> >> >> >> >
> >> >> >> >
> >>
> > ----------------------------------------------------------------------
> > 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