Right, makes sense now. Thanks.
BTW, I would like to add a request to the wiki, but have no access. How do I
request access to the wiki?
Thanks,
Jon
--------------------------------------------
On Tue, 7/10/18, Henry Rich <[email protected]> wrote:
Subject: Re: [Jprogramming] Test whether class member is primitive
To: [email protected]
Date: Tuesday, July 10, 2018, 12:06 PM
18!:0 y checks the status of y
when viewed as a locale-name.
Unfortunately
if y is totally bogus as a locale-name, 18!:0 fails with
rank/domain/whatever error.
[Jon, if you add a request to
system/interpreter/requests to remind me,
I
will modify 18!:0 to return _3 for malformed locale rather
than the
error.]
This is where (u :: v) is useful. It is a
verb that executes u
returning its result,
except that if u fails, the verb executes v and
returns the result of that.
So here, 18!:0 :: _3: is saying 'is y a
locale? and if you get an
error, just
return _3.' Remember _3: is a verb that always returns
_3,
same as _3"_ .
Henry Rich
On
7/9/2018 10:57 PM, 'Jon Hough' via Programming
wrote:
> Yes, you are correct, thanks:
>
> 1 = 18!:0 ::
_3: n__child
> 0
>
1 = 18!:0 :: _3: m__child
> 0
>
> 1 =
18!:0 :: _3: other__child
> 1
>
> Seems to work
fine!
> Although, in this case, I am not
entirely sure what _3: does. What exactly
> is it doing? Nuvoc doesn't seem to
have any example using it.
>
> Thanks,
> Jon
>
--------------------------------------------
> On Tue, 7/10/18, Henry Rich <[email protected]>
wrote:
>
> Subject:
Re: [Jprogramming] Test whether class member is primitive
> To: [email protected]
> Date: Tuesday, July 10, 2018, 11:52
AM
>
> It
looked to me that using
>
> 1 = 18!:0 :: _3:
>
> would solve your problem.
>
> Henry Rich
>
> On 7/9/2018
10:50 PM, 'Jon Hough' via
>
Programming wrote:
> > Sorry for
the lack
> of clarity. The answer is
yes, a boxed numbered locale.
> >
Please see my last email (you may have
> missed it because we seemed to have
sent at about the same
> time.)
> > My contrived example shows the
> root of the problem.
> >
> > You
are correct that this method is
>
fragile, but I don't know any other method.
> > Mixing up a boxed number locale
with a
> boxed string of digits should
never be an
> > issue with any of
my classes. If a
> variable is a boxed
string of digits then it is safe to
>
assume
> > it as a locale.
> >
> >
Anyway, my previous
> email gave a
specific example of when this problem occurs,
> and what I
> >
need to do to fix it to some
>
extent.
> >
>
> Thanks,
> > Jon
> >
>
--------------------------------------------
> > On Tue, 7/10/18, Henry Rich <[email protected]>
> wrote:
> >
> > Subject:
> Re: [Jprogramming] Test whether class
member is primitive
> > To: [email protected]
> > Date: Tuesday, July 10, 2018,
11:36
> AM
>
>
> > Is an
> 'object' a boxed
> > numbered
> locale? This is a yes-or-no
question,
> > and I think you
are saying
> 'yes', but I
> > want to be
> sure.
> >
> >
> Perhaps
> > you should use 18!:0 ::
> _3: ?
>
>
> >
>
You will always have the problem of
>
>
> distinguishing a boxed string
of
> >
>
digits
> > from a
locale-name.
> >
> > Looking
>
> at the path is a bad idea and
> fragile. Paths may be
> > changed
>
or
> > set to empty based on
the
> > programmer's
needs.
> >
>
> Henry Rich
> >
> > On
>
> 7/9/2018 10:16 PM, 'Jon Hough'
> via Programming
>
> wrote:
> > > By
"object" i mean
> >
some variable instantiated with conew -
> not a J type.
>
> > I am writing an
> object
serializer, and
> > looked
at
> > > https://code.jsoftware.com/wiki/Scripts/Serialization
> > >
>
> > A
> modified version
of
> > this works
> somewhat, but it has problems with
> >
> >
if. a: -: c=. {.(copath ::(a:"_)
>
> y)-.<,'z' do.
>
> > ...
> > >
> else.
> >
> ...
> > > end.
> >
> >
> > > the above test is to
check
> whether some
> > variable is an object
> or a J type.
>
> > It
> > fails on
some of my classes for the
> reasons I
explained in
> > my last
> email.
> >
>
> >
>
> It
> > seems 18!:0 works
for the
> case I gave, but in general
will
> > not
> work,
> >
> e.g. if m__myOtherClass
> =:
> > 1
>
> >
> 18!:0 <
m__myOtherClass
> > >
will
> give an rank error.
> > >
>
> > The serializer I am
>
> writing is 90% complete. It just fails
> when an object's
> > primitive
> member
> >
> variable is inherited
> >
from a parent class. Then my serializer
> thinks the member is
> > an object type,
> because
>
> > the primitive
> >
test,
> > > a:
> -: c=. {.(copath ::(a:"_)
> >
>
y)-.<,'z'
> > >
fails.
> > >
> > >
>
> >
> > >
> >
>
--------------------------------------------
> > > On Tue, 7/10/18, Henry
Rich <[email protected]>
> > wrote:
>
> >
> > >
Subject:
> > Re: [Jprogramming]
Test whether class
> member is
primitive
> > > To: [email protected]
> > > Date: Tuesday, July
10, 2018,
> 10:56
> > AM
>
>
> >
>
> > I
> >
don't understand the term
>
> >
> >
> 'object'.
> > >
>
> > Does that
> >
> mean
> >
> 'numbered locale'? If so,
then a test for
> > >
objectness
> > >
> > would
>
be
> > >
> >
> >
1
> > = 18!:0
> > >
>
> >
> > >
Henry Rich
> > >
> > >
>
On
> > > 7/9/2018
> > 9:41 PM, 'Jon Hough'
via
> Programming
> > > wrote:
> > > > I
> >
> want to
test if a given member
> >
> >
> >
variable of an object is
> primitive
(e.g. one of the J
> >
> > datatypes - literal, integer
etc etc)
> > or an object.
> >
> >
>
> > > >
> coclass
>
> >
> >
> 'MyClass'
> > > >
> > > >
> >
> >
create=: 3
> > : 0
> > > > m=:
> > >
>
>
> 'something'
> > > >
> )
> >
> >
> > >
>
> >
>
> >
> > > Here
is
> > one method:
> >
> >
>
> > > >
myClass
> =: '' conew
> > >
>
'MyClass'
> > >
>
> a: -: {. (copath
> > > ::(
> a:"_) m__myClass) -. <,
> >
>
'z' NB. return 1
> >
>
> if
>
> primitive, 0 if an object.
>
> > >
> >
> > > This works, except if the
member
> > is
> > >
>
defined in a parent class.
> >
>
> >
>
> > >
> >
coclass 'MyOtherClass'
>
> > >
> >
> coinsert 'MyClass'
> > >
>
>
> > > > create=:
3 : 0
> > > >
create_MyClass_ f.
> ''
> > > >
> ''
>
> >
> > > )
> > >
>
>
> > >
> >
> >
> > > >
> > >
>
>
> myOtherClass =: ''
conew 'MyOtherClass'
>
> > > a: -: {. (copath
> ::(
> >
a:"_)
> > >
m__myOtherClass) -. <,
> >
'z'
> >
> > >
>
> > >
> >
> >
> >
> > the above returns 0, but
member is a
> > primitive
member of the
> > >
MyOtherClass
> > instance.
Ideally this
> > >
>
> >
>
> should return 1 in this case, since m
> > is still a primitive
> > > member of
> > MyOtherClass.
> >
> >
>
> > > > Any
> better way to test for
> > primitive
> > > members?
> > > >
> >
> >
>
> > > Thanks,
> > > >
> >
> Jon
> > > >
> > >
>
>
>
----------------------------------------------------------------------
> > > > 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
> > >
>
>
>
----------------------------------------------------------------------
> > > 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
> >
>
----------------------------------------------------------------------
> > 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
>
----------------------------------------------------------------------
> 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
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm