Actually, I think he was asking why the speedup is not available without the =:
And I think that has to do with "ease of implementation". Also, if there's no =: then that syntax is almost certainly being used to generate a noun -- it's not being used to build a repeatable operation. You'd have to use different syntax to generate a useful verb. -- Raul On Thu, Dec 22, 2011 at 12:24 PM, Devon McCormick <devon...@gmail.com> wrote: > 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 ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm