]B=:2 4 $3 5 5 4 2 1 1 6 3 5 5 4 2 1 1 6 f=:(] #"1~ 1 , [: -. 2 -:/\ |:) f B 3 5 4 2 1 6 f C=:'' |length error: f | f C=:'' g=:(] #"1~ 1 , [: -. 2 -:/\ |:) ^:(*@#@]) g B 3 5 4 2 1 6 g C Thanks Linda -----Original Message----- From: programming-boun...@forums.jsoftware.com [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Linda Alvord Sent: Thursday, October 04, 2012 8:12 PM To: programm...@jsoftware.com Subject: Re: [Jprogramming] Why the length error?
I think I only need "ifany" . But I could call it "ifempty" . ifany=: ^:(*@#@]) rad=: 13 :'(1,-. 2-:/\|:y)#"1 y' ]B=:2 4 $3 5 5 4 2 1 1 6 3 5 5 4 2 1 1 6 rad ifany B 3 5 4 2 1 6 rad ifany C=:'' Linda -----Original Message----- From: programming-boun...@forums.jsoftware.com [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Henry Rich Sent: Thursday, October 04, 2012 7:38 PM To: programm...@jsoftware.com Subject: Re: [Jprogramming] Why the length error? I use ifany=: ^:(*@#@]) butifnull =: 2 : 'v"_`u@.(*@#@])' rad ifany C rad butifnull (2 0$0) C Henry Rich On 10/4/2012 7:22 PM, Linda Alvord wrote: > I just realized that all these choices, change B in some way. I want > it to always be a two row table of pairs in columns. > > B=:2 4 $3 5 5 4 2 1 1 6 > 3 5 5 4 > 2 1 1 6 > > ''$ B > 3 5 5 4 > {. B > 3 5 5 4 > 0 { B > 3 5 5 4 > ,/ B > 3 5 5 4 2 1 1 6 > > My only concern is when B happens to have no pairs, in which case I > want a result that is an empty array when rad is used. > > I'm glad I noticed these problems as they would have caused even more grief. > > Thanks for you continuing assistance. > > Linda > > -----Original Message----- > From: programming-boun...@forums.jsoftware.com > [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Raul > Miller > Sent: Thursday, October 04, 2012 11:34 AM > To: programm...@jsoftware.com > Subject: Re: [Jprogramming] Why the length error? > > Here are some options (I'm repeating concepts expressed by Roger Hui > and Devon McCormick: > > L=: 1,'' > ''$ L > {. L > 0 { L > ,/ L > > Roger's suggestion is equivalent to the APL classic in this context, > but in the general case you would need to ravel the right argument if > L had a rank greater than 1 (APL's rho is like ($,) in J). > > {. L and ''$L and 0 { L do exactly the same thing, but the syntax is > different, which can be significant if you are building a train > (Roger's approach re-expresses nicely as a fork -- 0 { L is also nice > in a fork but since numbers stick to other numbers to form numeric > words it's not quite as nice as Roger's approach).. > > ,/ L is different -- the others will discard extra elements and always > reduce the rank of the result while ,/ removes a leading dimension but > never gets rid of any elements (so if you have multiple elements it > will not take you below rank 1). > > Anyways... simplest depends on you and where you are going. And note > that there's other options also, depending... (+/L for example, would > also get you an atomic 1 in this case).. > > -- > Raul > > On Thu, Oct 4, 2012 at 9:35 AM, Linda Alvord <lindaalv...@verizon.net> > wrote: >> This is the crux of the problem: >> >> 1,'' >> 1 >> $1 >> $1,'' >> 1 >> >> What is the simplest way to make the shape of 1,'' be empty? >> >> Linda >> >> >> -----Original Messapege----- >> From: programming-boun...@forums.jsoftware.com >> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Ric >> Sherlock >> Sent: Thursday, October 04, 2012 2:40 AM >> To: programm...@jsoftware.com >> Subject: Re: [Jprogramming] Why the length error? >> >> This gives a length error because >> (1,'') # '' >> |length error >> | (1,'') #'' >> >> An simple solution to your problem is to returns the input on error: >> rad=: (#~ [: -. 0 , 2 -:/\ ])@|: :: ] >> rad '' >> >> rad B >> 3 2 >> 5 1 >> 4 6 >> >> On Thu, Oct 4, 2012 at 6:41 PM, Linda Alvord >> <lindaalv...@verizon.net> >> wrote: >>> >>> rad=: 13 :'(A=:1,-. 2-:/\|:y)#"1 y' NB. Remove adjacent >>> duplicates >>> >>> ]B=:2 4 $3 5 5 4 2 1 1 6 >>> 3 5 5 4 >>> 2 1 1 6 >>> rad B >>> 3 5 4 >>> 2 1 6 >>> >>> >>> The verb rad works as expected, but suppose in an earlier step B >>> has become empty, I get a length error. Why does this happen? >>> >>> >>> C=:'' >>> rad C >>> |length error: rad >>> | (A=:1,-.2-:/\|:y) #"1 y >>> A >>> 1 >>> 1#"1 C >>> >>> What can I do to get an empty result? >>> >>> Linda >>> >>> -------------------------------------------------------------------- >>> - >>> - 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 > > ---------------------------------------------------------------------- > 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