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

Reply via email to