Look at ;.0 Henry Rich
> -----Original Message----- > From: [EMAIL PROTECTED] > [mailto:[EMAIL PROTECTED] On Behalf Of > Alistair Tucker > Sent: Thursday, October 04, 2007 9:54 AM > To: [email protected] > Subject: [Jprogramming] shave=: #@:$ 0&(|:}:) ] > > Hiya, > Thanks for your response Raul, > the verb was intended as a monad to be applied to arrays of > arbitrary rank. It removes the topmost item of each dimension. > Originally shave=: #@:$ 0&(0&|:@:}:@:]) ] > The purpose of the outermost 0& was to produce a phrase that > would repeat (0&|:@:}:@:]) a number #@:$ of times. > You are right to say that the outermost 0& is redundant, > since I can produce the same effect with > shave=: #@:$ 0&(|:}:) ] > However the essentials of the implementation remain the same > - I rotate the array through each and every axis and apply > curtail }: at each step. > Really I meant to ask whether there might not be a better > way to carry out this operation - i.e. to apply curtail }: > through every dimension of an argument. Rotating the array > through its axes in this way must be an expensive process (isn't it?). > Cheers > Alistair > > > Raul Miller rauldmiller at gmail.com > Thu Oct 4 20:35:35 HKT 2007 > On 10/4/07, Alistair Tucker <alistairtucker at yahoo.co.uk> wrote: > > Seems clumsy and probably inefficient ... was wondering if anybody > > could think of a better way? > > A better way for what? Is your > shave=: #@:$ 0&(0&|:@:}:@:]) > meant to be used as a monad? a dyad? Is it used for all ranks > of arrays? Or only certain ranks (if a dyad, for either left or > right arguments)? > > That said, note that the outer most 0& can be removed, as that > 0 is being provided as a left argument to ] -- and with this removal > the parenthesis become redundant. > > alt1=: #@:$ 0&|:@:}:@:] > > Also, since this is a hook, once this has been rephrased you > no no longer nened the @:] and because }: as a monad has > infinite rank you can further rephrase this as > > alt2=: #@:$ 0&|:@}: > > Ultimately, your result is always going to be a relatively small > non-negative integer (produced by monadic #) so it seems likely > that an alternative expression could be formed for reasonably > constrained domains. However, if you must support both monad > and dyad forms for arguments of arbitrary rank, I'd probably > stick with alt2. > > .. but I'd be tremendously curious as to the purpose of this > expression if the monad and the dyad were both important > for arbitrarily ranked arrays. > > -- > Raul > > > ___________________________________________________________ > Yahoo! Answers - Got a question? Someone out there knows the > answer. Try it > now. > http://uk.answers.yahoo.com/ > ---------------------------------------------------------------------- > For information about J forums see > http://www.jsoftware.com/forums.htm ---------------------------------------------------------------------- For information about J forums see http://www.jsoftware.com/forums.htm
