On Fri, Sep 2, 2011 at 3:01 AM, Joey K Tuttle <[email protected]> wrote: > Happily, it gives the same result as oof (even though complicated and > obscure...) My use of the temporary z was just sloppiness - but I > didn't notice that until I was flummoxed by making a tacit form - > > hooft =: 13 : '+/"1 ((i.y+1) =/ +/"1 z) [ z =. #: i. 2^y' > > and discovering that it produces a very different result (displaying > the shape is sufficient to show that without wasting space). > > $hooft 6 > 7 64 7 > > So clearly, 13 : failed. This rings a bell of something similar being > reported before, but maybe it is different. I haven't succeeded in a > simple expression that goes wrong in the same way. I'm sure someone > in the forum can provide a tacit form that is similar, but works > correctly - something other than -
You can make that long expression tacit by breaking out the expression which finds z: 13 : 'z =. #: i. 2^y' [: #: [: i. 2 ^ ] At this point the remaining expression has two variables: y and z. This suggests using a hook for a monadic context. So we can replace y wiith x and z with y: 13 : '+/"1 ((i.x+1) =/ +/"1 y)' [: +/"1 ([: i. 1 + [) =/ [: +/"1 ] And then we plug the two phrases back into the parenthesis of (() ()): (([: +/"1 ([: i. 1 + [) =/ [: +/"1 ])([: #: [: i. 2 ^ ])) 6 1 6 15 20 15 6 1 Also, here is a simpler expression which probably illustrates the same problem: '; ((y+1) ; , z) [ z =. 2+y' I found this by defining: expr=: 1 :'((3 :m),&<(13 :m))' And then experimenting with sentences like: $&.> 'experiment' expr 6 until I had found a short one and then switching to 'experiment' expr 3 to simplify it further. FYI, -- Raul ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
