Hi Alex,
this is strange indeed.
I checked on Bash/Archlinux as well, same problem as Win Term / WSL2, so
this is not about WSL or so.

I can like you define a dummy wrapper, and debug it, and it looks fine:

: (de foo (I J) (! native NIL NIL 1.0 I J))
-> foo
: (foo 2 3)
(native NIL NIL 1 I J)
! J
-> 3

So here I can use J as argument name, and it works.

But with my real wrapper functions, where ever I use J, as first or second
arg, its interpreted as a transient symbol and is NIL, even if I create a
fake wrapper without any real lib reference:

: (rmath~exp_rand_fake2 3 2)
(native NIL NIL 1 "J" B)
! J
-> NIL

But when I rename J to H in my real wrapper function, the problem is gone:
: (rmath~pwilcox 1.2 2.1 3.2 3 2)
(native "libRmath.so" "pwilcox" 1 (cons X 1) (cons Y 1) (cons Z 1) I H)
! H
-> 2

So I think I know whats the problem here: its reading the function
definitions from a library file vs defining the definition directly in the
repl.
(load "libRmath.l") seems to have a problem with the char J used for a
paramter, and somehow converts it into a transient symbol.

The easy solution is therefore to avoid J as parameter name ;-)
But maybe I found a bug?

Cheers
Thorsten

Am So., 15. Nov. 2020 um 09:01 Uhr schrieb Alexander Burger <
a...@software-lab.de>:

> Hi Thorsten,
>
> > (de pwilcox (X Y Z I J)
> > ...
> > : (rmath~pwilcox 2.7 6.20 5.4 1 3)
> > (native "libRmath.so" "pwilcox" 1 (cons X 1) (cons Y 1) (cons Z 1) I "J")
> > ...
> > ! J
> > -> NIL
> > Why is that second Integer argument interpreted as transient symbol, and
> > then NIL although the actual arg = 3?
>
> This is strange. I tried the same here, and get
>
>    (native NIL "pwilcox" 1000000 (cons X 1000000) (cons Y 1000000) (cons Z
> 1000000) I J)
>
> And I get 3 as expected for 'J'.
>
> Note the scaled integers! It seems your *Scl is zero. But this does not
> explain
> what you see. Are you sure you pasted exactly what you tested?
>
>
> > In the docs I only find:
> >     "The number of fixpoint arguments is limited to six."
> > but that looks irrelevant here.
>
> Yes, for pil64. For pil21 this no longer holds. There is no more limit on
> the
> number of float or double arguments.
>
> ☺/ A!ex
>
> --
> UNSUBSCRIBE: mailto:picolisp@software-lab.de?subject=Unsubscribe
>

Reply via email to