No bug; check the type of f.  When you 'display' it, you are seeing the error, not the value.

I'm sure we will talk more about better error reporting as we get experience.

Henry Rich

On 4/11/2022 1:16 PM, 'Pascal Jasmin' via Beta wrote:
   'a' < t.'' 1 2 3

|domain error

'a' < 1 2 3

|domain error

| 'a' <1 2 3


When a pyx returns an error, the content of the pyx appears unboxed? which 
seems like a bug

  2 < t.'' 1 2 3

┌─────┐

│0 0 1│

└─────┘

  f =. ('a';1;2) < t.'' &> 1 2 3

f

|domain error

4 T. ('a';1;2) < t.'' &> 1 2 3

_3 10 8

4 T. f

_3 _1000 _1000

the result for f should be 3 boxes with the first holding the error text 
(preferably the 2 line version).  The same format as if no error


   (3;1;2) < t.'' &> 1 2 3

┌─┬─┬─┐

│0│1│1│

└─┴─┴─┘


My request is to be able to "decorate (with metadata)" an ordinary box such that it 
responds to 4&T. with an error number (instead of _1001), and the content is likely to be 
error text.


On Monday, April 11, 2022, 12:39:28 p.m. EDT, Henry Rich <[email protected]> 
wrote:





Look at 13!:8 for your mkerr.

Good point about having more error info; but maybe debug would give even
more?

Henry Rich

On 4/11/2022 12:33 PM, 'Pascal Jasmin' via Beta wrote:
Could there be a foreign that generates an "error pyx"?

A functional/debugless error handing/processing model.

f error = error passed through.

raising error function y = above error state ;  < f ; y ; x (or last 2-3 boxes 
in ar format suitable for `:6.  boxed to make 1 item for consistency with monad 
dyad function shapes)

A way to unify pyx and sequential code for "later consumption" with simple 
error management/awareness is  (a cruder version of this non pyx)

t =: t.''
P =: 1 : ('(u y) (;<) (u ar) ` (y ar) '; ':'; '(x u y) (;<) (x ar) ` (u ar) ` 
(y ar)')

ERROR =: 0 1 0 $ _
isErr =: ((< ERROR) -: {.@{.@:])
E =: (`])(@.isErr)
mkerr =: 1 : 'u :: ((ERROR ; 13!:11 ; 13!:12)@:(''''"_))'



2 + E 'a' < mkerr 1 2 3

┌┬─┬──────────────────────────────────────────┐

││3│|domain error | 2+E'a' <mkerr3 1 2 3 │

└┴─┴──────────────────────────────────────────┘


With boxes/pyxes having metadata returning an error code, being able to use that "internal J 
metadata" would be preferable to this "roll my own functional error handling".

Note that some info (error position/line) in error handling  in a thread gets 
disabled:

   > 'a' < mkerr t. '' 1 2 3

┌┬─┬──────────────┐

││3│|domain error │

└┴─┴──────────────┘

I mentioned, user building the "calling code" along side the pyx.  This is for the ultra rare 
condition where a retry on the code might be fruitful.  An alternative would be 41&T. pyx(es) 
returning the "full" 13!:12 info instead of this shorter one.  13!:12 linear copy of (error) 
text includes indent hints of where in the code caused the error.

Async code is going to manage a list of pyxes for further processing, often ignoring (leaving in queue 
or removing to add to an error reporting queue) those that returned errors.  The code that caused the 
errors is useful info, because it probably has a bug.  A foreign that adds the same metadata to boxes 
such that 4&T. can filter for "general functional errors (return values)" is needed/good 
if only because sequential boxes can be added to pyxes "further processing lists"


On Monday, April 11, 2022, 09:01:29 a.m. EDT, Henry Rich <[email protected]> 
wrote:





Correct that 'boxes' not 'pyxes' is what 4 T. operates on.  (A pyx is
also a box).

Incorrect that a pyx turns into a box when it completes.  It's still a
pyx, as you will see if you open it and it contains error - the error is
signaled to you on the opening.

Henry Rich

On 4/10/2022 9:49 PM, 'Pascal Jasmin' via Beta wrote:
The argument is a box or array of boxes as documented.  _1001 is return value 
if not a pyx, and _1000 (completed pyx) is I think not a pyx anymore.





On Sunday, April 10, 2022, 09:33:37 p.m. EDT, Elijah Stone 
<[email protected]> wrote:





On Sun, 10 Apr 2022, Joe Bogner wrote:

It would be more clear I think if it said "A pyx or array of pyxes" -
https://code.jsoftware.com/wiki/Vocabulary/tcapdot#dyadic.  I'm not
comfortable updating the wiki with this recommendation unless others
agree.
I think that change is sensible.  I might even shorten to simply 'array of

pyxes'.
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm



--
This email has been checked for viruses by AVG.
https://www.avg.com

----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm

Reply via email to