On 10/25/24 08:13, Dr. Jürgen Sauermann
wrote:
Hi Henrik,
thanks for the reminder. Fixed in SVN 1783.
I also spotted an error which caused ⎕NC to return a wrong value
for ⍺, ⍵, etc.
⍺ and ⍵ came after ⎕NC was first implemented, and I failed to
handle them properly.
Note also that ⎕NC is slightly different from IBM's by having
different values for
user defined and system defined names. Therefore ⍺ has a ⎕NC of 5
if defined.
For example:
MINUS←{ (⍺-⍵)⊣⍎"0"⊢[5≠⎕NC'⍺']"⍺←0" }
5 MINUS 1
4
MINUS 1
¯1
Best Regards,
Jürgen
On 10/24/24 18:15, Henrik Moller
wrote:
Hey, Jürgen,
Thanks.
This is part of continuing work on the mtx native function thing
I put up six months ago, and just for the sake of consistency, I
was trying make all the mtx functions lambdas, but it's no
problem to use a ∇ function when I need ambivalence. (If I'd
looked at how you implement lambdas and conditionals, I would
have known the lambda approach wouldn't work...)
Speaking of mtx, per the note I sent you a couple days ago, have
you had a chance to look into making the dlopen() in
NativeFunction::try_one_file() use RTLD_LAZY instead of
RTLD_NOW? I don't think anyone but me is using mtx, so it's
cool if LAZY isn't in your plans--it just means I patch the line
when you put out a new SVN.
Thanks,
Henrik
On 10/24/24 11:30, Dr. Jürgen
Sauermann wrote:
Hi Henrik,
I believe I fixed the Segfault. You should now get
a DEFN ERROR instead with )MORE information.
SVN 1782.
The reason is this:
1, Conditionals, i.e. COND →→ IFSTAT ←→ ELSESTAT ←←
create 2 or 3 statements, one for COND, one for IFSTAT and
optionally one for ELSESTAT.
2. GNU APL lambdas are limited to one APL _expression_ (= one
APL statement)
and the _expression_ must yield a value (and can therefore
not be a branch).
3. The normal work-around for this limitation is to use a
proper ∇-defined function.
Best Regards,
Jürgen