The issue is the rank of the @. derived verb

No additional problem is introduced through the use of a hook here.

Thanks,

-- 
Raul

On Thu, May 25, 2023 at 2:05 PM Martin Kreuzer <i...@airkreuzer.com> wrote:
>
> In addition, I don't understand why
>
>     f=: (1:)`(* [: $: <:) @. *
>
> shouldn't suffice, compared to
>
>     f=: (1:)`(] * [: $: <:) @. *
>
> as
>
>     (* [: $: <:) y
>
> looks to me like a regular hook.
>
> -M
>
>
> At 2023-05-25 18:33, you wrote:
>
> >This is odd.
> >
> >According to https://code.jsoftware.com/wiki/Vocabulary/atdot f should
> >have rank 0 (since v is * here).
> >
> >But, when I redefine f as
> >    f=: 1:`(] * [: $:&([echo) <:)@.*
> >
> >I see that when (f 2 3 5 7 11) is executed, f is being treated as some
> >other rank. This does not occur for (f 2 3 5 7).
> >
> >Using $:@<: works around this issue by using $: with the rank of <:
> >(the rank problem with @. would still occur, without triggering a rank
> >error).
> >
> >Also, the j implementation tells me that f has infinite rank - despite
> >what nuvoc says and despite the behavior for (f 2 3 5 7):
> >
> >    f b.0
> >_ _ _
> >
> >--
> >Raul
> >
> >On Thu, May 25, 2023 at 11:12 AM Martin Kreuzer <i...@airkreuzer.com> 
> >wrote:
> >
> > > Dear all -
> >
> > > Thought I had succeeded in deducing step by
> > step the tacit verb for factorial,
> >
> > >     f=: 1:`(] * [: $: <:)@.*
> >
> > > when I encountered this:
> >
> > >     f=. 1:`(] * [: $: <:)@.*
> > >     f 2 3 5 7
> > > 2 6 120 5040
> > >     f 2 3 5 7 11
> > > |rank error in f, executing monad $:
> > > |       f 2 3 5 7 11
> >
> > > In contrast this seems to work alright:
> >
> > >     g=. 1:`(] * $: @ <:)@.*     NB. dictionary entry
> > >     g 2 3 5 7
> > > 2 6 120 5040
> > >     g 2 3 5 7 11
> > > 2 6 120 5040 39916800
> >
> > >     JVERSION
> > > Engine: j9.4.2/j64avx2/windows
> > > Build: commercial/2023-04-10T01:19:53/clang-15-0-7/SLEEF=1
> > > Library: 9.4.21
> > > Platform: Win 64
> > > Installer: j9.4 install
> > > InstallPath: d:/program files (non-sys)/j9.4
> > > Contact: www.jsoftware.com
> >
> > > However, my verb
> >
> > >     f=: 1:`(] * [: $: <:)@.*
> > >     f 2 3 5 7 11 13
> > > 2 6 120 5040 39916800 6227020800
> >
> > > works under v8.07 as expected ....
> >
> > > Could somebody shed some light on this ?
> >
> > > -M
> >
> > > ----------------------------------------------------------------------
> > > 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