This actually looks like a good idea. I was concerned about performance, but this kind of thing also seems just as fast as the other approach, and a bit more compact:
num=:(1 [ 0+{.@,) ::0: numeric=: 0 = 0 {.@{. , 1e4 timespacex 'numeric 3 4' 1.0472e_6 2176 1e4 timespacex 'num 3 4' 9.204e_7 1408 Plus, we don't have to worry about if sparse array default value will ever leak in, in some J version. Thanks, -- Raul On Thu, Nov 9, 2017 at 1:40 PM, Marshall Lochbaum <mwlochb...@gmail.com> wrote: > Actually, the domain error thing gives me an idea: > > numeric =: (1[[:+''($,)]) :: 0: > > numeric i.3 5 > 1 > numeric <2 3 > 0 > numeric 'abcd' > 0 > > Reshape to scalar, attempt to apply complex conjugate, and then return > 1. If conjugate failed, return 0. You could skip the reshape, yielding > ((1[+) :: 0:), but this gives a false positive on empty character arrays > and will actually compute the conjugate of a complex argument, which > could be slow. > > Marshall > > On Thu, Nov 09, 2017 at 01:01:40PM -0500, Raul Miller wrote: >> I would be inclined to do something similar: >> >> numeric=: 0 = 0 {.@{. , >> >> That said, it's usually sufficient to rely on domain errors for this >> kind of thing. >> >> Thanks, >> >> -- >> Raul >> >> >> >> >> >> >> On Thu, Nov 9, 2017 at 12:20 PM, Michael Berry <mjabe...@gmail.com> wrote: >> > Hello J world, >> > >> > I have a verb that returns scalar 1 if the argument is numeric of any shape >> > and scalar 0 otherwise. >> > It works fine: >> > >> > numeric i. 5 >> > >> > 1 >> > >> > numeric 9 >> > >> > 1 >> > >> > numeric i. 2 3 4 >> > >> > 1 >> > >> > numeric 'cat' >> > >> > 0 >> > >> > numeric 3#<i. 4 >> > >> > 0 >> > >> > >> > My definition feels clumsy, however. Can anyone suggest something nicer? >> > >> > >> > numeric=: monad : '0 -: 0{ , 1{. 0#y' >> > >> > >> > -Michael >> > ---------------------------------------------------------------------- >> > For information about J forums see http://www.jsoftware.com/forums.htm >> ---------------------------------------------------------------------- >> For information about J forums see http://www.jsoftware.com/forums.htm > ---------------------------------------------------------------------- > For information about J forums see http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm