In a word: performance. a=. 1e6?@$0 b=. <:+:1e6?@$0 c=. 1e6?@$2
10 ts 'r=. c}b,:a' 0.0066557413 8390912 10 ts 'c}b,:a' 0.021307987 41945088 On Thu, Dec 22, 2011 at 11:00 AM, Johann Hibschman <jhibsch...@gmail.com>wrote: > Thanks, everyone. I never understood item-amend until now. That's > exactly what I was looking for. For context, I was reading through the > APL book and hit the "/a,u,b/" notation, and wondered how to do that > in J. > > One question though: why is the particular form (result=:c}b,:a) > singled out, rather than the general (c}b,:a)? > > On Wed, Dec 21, 2011 at 10:54 AM, Henry Rich <henryhr...@nc.rr.com> wrote: > > Note that > > > > c}b,:a > > > > does indeed compute b,:a. But if it's used in the precise form > > > > result =: c}b,:a > > > > the computation is avoided. > > > > b =: 1e6$4 > > a =: 1e6$4 > > c=: ? 1e6$ 2 > > ts 'c}b,:a' > > 0.0401299 2.09725e7 > > ts 'q =: c}b,:a' > > 0.0112949 4.19558e6 > > > > There are other special cases; see the Special Code page. > > > > Henry Rich > > > > On 12/21/2011 11:43 AM, Marshall Lochbaum wrote: > >> A more obvious way is to use (c { b,.a) . The key is to realize that > saying > >> (if c then a else b) is just selection: if c is 0, we pick b, and if c > is > >> 1, we pick a. So we rephrase as (c { b,a), and J's implicit rank allows > us > >> to do (c { b,.a) for vector c, a, and b. > >> > >> That said, (c} b,:a) is faster, and uses less memory by not actually > >> computing b,:a . So it's a better choice. > >> > >> Marshall > >> > >> On Wed, Dec 21, 2011 at 10:26 AM, Brian Schott<schott.br...@gmail.com > >wrote: > >> > >>> One way is the following. > >>> > >>> c}b,:a > >>> 10 2 30 > >>> > >>> > >>> -- > >>> (B=) > >>> ---------------------------------------------------------------------- > >>> 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 > -- Devon McCormick, CFA ^me^ at acm. org is my preferred e-mail ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm