On 2020-08-03 11:52, Brian Schott wrote:
This thread hints at a problem I am having.
In particular the link suggested by Henry
https://code.jsoftware.com/wiki/Vocabulary/ErrorMessages#value

My problem is that I want to detect an error caused by an undefined noun
but my attempt does not produce the desired error using :: .
For example in the example below, although `a` is undefined, I do not get
the desired result, 0, from my verb `tally` when I execute `tally a`.
How can I define tally to produce 0 for an undefined argument. Or how do I detect an undefined argument, in general? I have considered using a try.
... catch. in an explicit definition, but to me that seems unnecessary.

   a
|value error: a
   tally =: # :: 0:
   tally i. 4
4
   tally a
tally a

Is it important to catch it interactively like this?

If you're being given variable names from untrusted input that might
be wrong, then you can evoke the names (m~) instead of doing them (".n)
to get an error:

   a =: i.5
   'a'~
0 1 2 3 4
   clear''
   'a'~
|value error: a


On Wed, Nov 6, 2019 at 5:11 AM Henry Rich <henryhr...@gmail.com> wrote:

https://code.jsoftware.com/wiki/Vocabulary/ErrorMessages#value

Henry Rich

On 11/6/2019 4:26 AM, Arnab Chakraborty wrote:
> Dear all,
>
>      Here is a behavior that I noticed only recently, and it puzzles me a
> lot:
>
>    Let's say abc and xyz are not defined in my J session, and type just
abc
> by itself in a line. Of course, I get a value error. But if I type
>
> xyz abc
>
> then J does not produce any error, but simply echos back what I have
typed!
> I expected that J would start executing from the right, encounter abc,
and
> produce a value error. If I now define abc (say abc=. 0), then
>
> xyz abc
>
> produces a value error (expected) about xyz.
>
> But why does J become silent in presence of multiple undefined symbols?

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

Reply via email to