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

Reply via email to