Prefix Notation
- To: mathgroup at smc.vnet.net
- Subject: [mg51654] Prefix Notation
- From: DrBob <drbob at bigfoot.com>
- Date: Wed, 27 Oct 2004 23:43:34 -0400 (EDT)
- References: <200410270554.BAA24573@smc.vnet.net> <opsgir6amviz9bcq@monster.cox-internet.com> <9BB7BB28-282E-11D9-B7B7-000D9350C9C2@videotron.ca>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
> May I ask a naive question? What's the difference between @ and [] > when calling a built-in function, for example, Length@theSeries cf. > Length@theSeries? f@x takes one less keystroke than f[x], and it thins the forest of brackets that can make code so unreadable. I typically use @ whenever f has only one argument, if the argument doesn't need anything to separate it from everything else. I'd usually use f[x+y], for instance, not f@(x+y), though both are equivalent. (It doesn't matter whether f is built-in or not.) Look up Prefix in Help, and you'll also see Infix and Postfix notations mentioned. There are times when a combination of all three may be more understandable, as in: f[x ~g~ y ~g~ z // h, options] rather than f[h[g[x,y,z]],options] I rarely use Infix except for "+", "*", ".", "&&", and "||" which are shorthand for "~Plus~", "~Times~", "~Dot~", "~And~", and "~Or~". There are symbols for ~Union~, ~Intersection~, and a few others, too. Bobby On Wed, 27 Oct 2004 11:41:03 -0400, Gregory Lypny <gregory.lypny at videotron.ca> wrote: > Thanks once again, Bobby. It's fixed. > > I think my problems with defining functions have to do with using "=" > rather than ":=". I used the constant 1,000 because I thought > Length[theSeries] might have been the source of the problem. > > May I ask a naive question? What's the difference between @ and [] > when calling a built-in function, for example, Length@theSeries cf. > Length@theSeries? > > Regards, > > Greg > > On Oct 27, 2004, at 4:21 AM, DrBob wrote: > >> MA[theSeries_,theWindowSize_]: >> =PadLeft[MovingAverage[theSeries,theWindowSize], >> Length@theSeries]; >> Range@10 >> MA[Range@10,3] >> >> {1,2,3,4,5,6,7,8,9,10} >> >> {0,0,2,3,4,5,6,7,8,9} >> >> That seems to do what you asked for. >> >> Why did you have the constant 1000 hardwired in your version? >> >> Bobby >> >> On Wed, 27 Oct 2004 01:54:37 -0400 (EDT), Gregory Lypny >> <gregory.lypny at videotron.ca> wrote: >> >>> Hello Everyone, >>> >>> I'd like to create some custom moving average functions that retain >>> the >>> same length as the original series by padding the lost observations >>> with zeros. I can get the moving average part of the function to work >>> but not the padding part. >>> >>> This part without padding works: >>> >>> MA[theSeries_, theWindowSize_] = MovingAverage[theSeries, >>> theWindowSize]; >>> >>> But adding the padding causes it to fail: >>> >>> MA[theSeries_, theWindowSize_] = PadLeft[MovingAverage[theSeries, >>> theWindowSize], 1000]; >>> >>> Any suggestions would be most appreciated. >>> >>> Greg >>> >>> >>> >>> >> > > > > -- DrBob at bigfoot.com www.eclecticdreams.net
- References:
- Creating a Moving Average Function
- From: Gregory Lypny <gregory.lypny@videotron.ca>
- Creating a Moving Average Function