Re: new functional operator
- To: mathgroup at smc.vnet.net
- Subject: [mg125366] Re: new functional operator
- From: Barrie Stokes <Barrie.Stokes at newcastle.edu.au>
- Date: Sat, 10 Mar 2012 06:14:08 -0500 (EST)
- Delivered-to: l-mathgroup@mail-archive0.wolfram.com
- References: <jit0me$e32$1@smc.vnet.net> <jivd47$n7j$1@smc.vnet.net>
Hi Roby Very nice also; even prettier is, e.g., In[288]:= {1, 2, 3} \[LeftTee] (s \[Function] Sin[ s^(2 Log[ s]) ]) Out[288]= {Sin[1], Sin[2^(2 Log[2])], Sin[3^(2 Log[3])]} and In[289]:= {1, 2, 3} \[LeftTee] Sin \[LeftTee] Sqrt \[LeftTee] (s \[Function] Sin[ s^(2 Log[ s ]) ]) Out[289]= {Sin[Sin[1]^(1/2 Log[Sin[1]])], Sin[Sin[2]^(1/2 Log[Sin[2]])], Sin[Sin[3]^(1/2 Log[Sin[3]])]} for someone who thinks "#" and "@" are ugly. I think I like LeftTee more than RightVector, since the former sort of "points" in the direction of application of the pure function. Maybe LeftVector is another possibility? Now I just need to devise a mnemonic keyboard shortcut ... Cheers Barrie >>> On 08/03/2012 at 8:36 pm, in message <201203080936.EAA14139 at smc.vnet.net>, roby <roby.nowak at gmail.com> wrote: > On 4 Mrz., 10:37, noqsiaerosp... at gmail.com wrote: >> On Saturday, March 3, 2012 8:52:46 PM UTC+9, roby wrote: >> > Dear Group and Mathematica staff. >> >> > In the functional programming spirit I am missing a postfix notation >> > forMap[ ]. >> >> How about: >> >> RightVector[a_,f_]:=Map[f, a] >> RightVector[a_,more__]:=RightVector[Map[{more}[[1]],a],Sequence@@Drop[{more > },1]] >> >> Then: >> >> {1,2,3}\[RightVector](#^2&)\[RightVector]g >> >> yields: >> >> {g[1],g[4],g[9]} >> >> (it looks nicer in a notebook) > > Yes, > > THIS IS IT > > surprisingly easy, surprisingly not yet standard in Mathematica > > can even be prettyfied a little bit: > > RightVector[a_,f_]:=f/@a > RightVector[a_,more__]:=RightVector[First@{more}/ > @a,Sequence@@Rest@{more}] > > or we can use LeftTee[ ] which in contrast to RightArrow[ ] already > implements the neccesary left-assocciativitiy such that: > > LeftTee[a_, f_] := f /@ a > > is all we need. > > > {1,2,3}\[LeftTee]Sin\[LeftTee]Sqrt > (looks nicer in a notebook) > > > Robert