I get different results in jhs where none of the lines have an empty line.

NB. Here
   5#''
   (5#'')*/i.5
   ''*/i.5
   ''     
   NB. To here

I actually always expected to have an empty line for each expression.

Linda

-----Original Message-----
From: programming-boun...@forums.jsoftware.com
[mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Don Kelly
Sent: Wednesday, September 10, 2014 7:44 PM
To: programm...@jsoftware.com
Subject: Re: [Jprogramming] Replace one item of a list

I get
5#''


(5#'')*/i.5

''*/i.5

                                     NOTE-. blank line
using J802

Don Kelly


On 10/09/2014 4:16 PM, Linda Alvord wrote:
> Dan,  after your 4 series, I tried this.  Also odd:
>
> NB.  Begin here
>     5#''
>
>     (5#'')*/i.5
>     ''*/i.5
>     ''
>
> NB. Note the spacing between lines above
>     
> Linda
>
> -----Original Message-----
> From: programming-boun...@forums.jsoftware.com
> [mailto:programming-boun...@forums.jsoftware.com] On Behalf Of Dan Bron
> Sent: Wednesday, September 10, 2014 11:56 AM
> To: programm...@jsoftware.com
> Subject: Re: [Jprogramming] Replace one item of a list
>
> Linda wrote:
>>      *i.5
>> 0 1 1 1 1
>>     */"0 i.5
>> 0 1 2 3 4
> Joe wrote:
>>   It looks like /"0 yields the right side without evaluating the left
side
>>
>>      asdfasdf/"0 i.5
>>   0 1 2 3 4
>>
>>   I don't totally get it myself
> This boils down to  foo/ scalar_value  .
>
> Note that because of the "0 (meaning "apply to each scalar value
> individually")
>
>          asdfasdf/"0 i.5
>       0 1 2 3 4
>
> is equivalent to
>
>          (asdfasdf/ 0),(asdfasdf/ 1),(asdfasdf/ 2),(asdfasdf/
> 3),(asdfasdf/ 4)
>       0 1 2 3 4
>
> In Linda's example, asdfasdf is *, so her example is
>
>          (*/ 0),(*/ 1),(*/ 2),(*/ 3),(*/ 4)
>       0 1 2 3 4
>
> And this is quite different from the other expression she contrasts it
> with, which is
>
>          *i.5
>       0 1 1 1 1
>
> which, because monad * (signum) is a scalar function, is equivalent to:
>
>          *"0 i.5
>       0 1 1 1 1
>
> which, after expanding in the same manner as above, is equivalent to:
>
>         (* 0),(* 1),(* 2),(* 3),(* 4)
>       0 1 1 1 1
>
> Note the lack of any  /  which is the key issue here.  That is, the
> difference Linda spotted boils down to the difference between these two
> expressions:
>
>          */ 4
>       4
>
>          * 4
>       1
>
>
> Now, *4 is 1 because 4>0  ; no mystery there.  But why does  */4  produce
> 4  ?  Well,  */  is product, and
>
>          */ 4 4 4 4  NB. Product of four 4s is 4^4, 256
>       256
>          */ 4 4 4    NB. Product of three 4s is 4^3, 64
>       64
>          */ 4 4      NB. Product of two 4s is 4^2, 16
>       16
>          */ 4        NB. Product of one 4 is 4^1, 4
>       4
>
> And in general,  foo/ scalar_value  (or asdfasdf/ scalar_value)  is simply
> scalar_value  .  Because    foo/ noun  says "insert foo between all _pairs
> of items_ in noun", but when noun is scalar_value, there _are no pairs_,
> so no insertion is done.
>
> -Dan
>
> PS:  and, of course,
>
>          */ ''        NB. Product of zero "4s"  is 4^0, 1
>       1
>
> There are no pairs to insert * between here, either, but empty arguments
> gets into identity functions.
>
> ----------------------------------------------------------------------
> 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

Reply via email to