(<'=:') splitstring each ('a=:b';'c=:dz')
+-----+------+
|+-+-+|+-+--+|
||a|b|||c|dz||
|+-+-+|+-+--+|
+-----+------+
     '=:' splitstring L:0 ('a=:b';'c=:dz')
+-----+------+
|+-+-+|+-+--+|
||a|b|||c|dz||
|+-+-+|+-+--+|
+-----+------+


R.E. Boss

(Add your info to http://www.jsoftware.com/jwiki/Community/Demographics )


> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com [mailto:programming-
> boun...@forums.jsoftware.com] On Behalf Of Joe Bogner
> Sent: vrijdag 17 januari 2014 16:29
> To: programm...@jsoftware.com
> Subject: [Jprogramming] Adverb each rank
> 
> Starting a new thread from
> http://jsoftware.com/pipermail/programming/2014-January/034594.html
> for better future searching and more relevant subject
> 
> On Fri, Jan 17, 2014 at 5:52 AM, Raul Miller <rauldmil...@gmail.com> wrote
> > Have you seen the wikipedia entry on rank?
> > http://en.wikipedia.org/wiki/Rank_(J_programming_language)
> 
> Yes, that's been helpful in the past. Thank you for writing and
> sharing it.  It would be useful to add language for infinite rank,
> which seems to be what I'm tripping up on.
> 
>   '=:' splitstring each ('a=:b';'c=:dz')
> ┌──────┬───────┐
> │┌─┬──┐│┌──┬──┐│
> ││a│:b│││c=│dz││
> │└─┴──┘│└──┴──┘│
> └──────┴───────┘
> 
> I have a solution that seems more appropriate, to bond the left
> argument to splitstring to create a monad
> 
>  '=:'&splitstring each ('a=:b';'c=:dz')
> ┌─────┬──────┐
> │┌─┬─┐│┌─┬──┐│
> ││a│b│││c│dz││
> │└─┴─┘│└─┴──┘│
> └─────┴──────┘
> 
> Going back to the faulty one, I'm seeking to understand why it does that:
> 
> splitstring has infinite rank
> 
> splitstring b. 0
> _ _ _
> 
> Something is triggering it to operate like this:
> 
> for(i = 0; i<leftLength;i++) {
> left[i] splitstring right[i]
> }
> 
> '=' splitstring 'a=:b'
> ':' splitstring 'c=:dz'
> 
> This can be demonstrated by doing this:
> 
> '=:z' splitstring each ('a=:b';'f=:m')
> |length error
> | '=:z' splitstring each('a=:b';'f=:m')
> 
> Which fails because the left shape is greater than the right shape.
> 
> If I try to look at the rank of each, that doesn't work:
> 
> each b. 0
> |syntax error
> | each b.0
> 
> each is an adverb created with the &. conjunction
> 
> The dictionary[1] says:
> 
> "The verb u &.v is equivalent to the composition u & v except that the
> verb obverse to v is applied to the result for each cell. That is
> (subject to the monadic rank of v)"
> 
> This looks like it came up at a NYCJUG[2]
> 
> "It doesn’t work – why?  Based on the shape of the result, we might
> suspect a problem with rank.  Unfortunately, we can’t specify the rank
> of an adverb:"
> 
> If I understand the dictionary correctly, it will use the rank of the
> verb, which for each is >. > has a rank 0 0 0.
> 
> > b. 0
> 0 0 0
> 
> As a more simple example, it looks like it's doing something like this:
> 
> '=:' ,"0 0 1 'bbcc'
> =bbcc
> :bbcc
> 
> Rank for the monad case (−y is an example of using − as a monad)
> Rank for the left argument for the dyad case (x−y is an example of
> using − as a dyad)
> Rank for the right argument for the dyad case
> 
> Can anyone shed some light on why   '=:' splitstring each
> ('a=:b';'c=:dz') is applying its left argument iteratively to the
> right argument?  Am I on the right path with this analysis?
> 
> 
> [1] - http://www.jsoftware.com/help/dictionary/d631.htm
> [2] - http://www.jsoftware.com/jwiki/NYCJUG/2013-01-08
> [3] - http://en.wikipedia.org/wiki/Rank_(J_programming_language)
> ----------------------------------------------------------------------
> 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