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

Reply via email to