Re: Default and head in function argument
- To: mathgroup at smc.vnet.net
- Subject: [mg111624] Re: Default and head in function argument
- From: Simon <simonjtyler at gmail.com>
- Date: Sat, 7 Aug 2010 06:30:25 -0400 (EDT)
- References: <i3jc5s$d0n$1@smc.vnet.net>
Just to follow up Leonid's answer; the thing to remember here is that x_ is just shorthand for x:_ and is not always applicable In[1]:= x_ // FullForm Out[1]//FullForm= Pattern[x,Blank[]] In[2]:= x:_ // FullForm Out[2]//FullForm= Pattern[x,Blank[]] In[3]:= x:(_Integer?Positive):3 // FullForm Out[3]//FullForm= Optional[Pattern[x,PatternTest[Blank[Integer],Positive]],3] Simon On Aug 7, 8:22 pm, Leonid Shifrin <lsh... at gmail.com> wrote: > Hi, > > Clear[f]; > f[x : (_Integer?Positive) : 3] := x^3 > > Regards, > Leonid > > On Sat, Aug 7, 2010 at 9:31 AM, NP <nomplum... at gmail.com> wrote: > > Hi, > > > I know how to define a function so that it evaluates only when the > > head of the argument is of a certain type: > > > Clear[f]; > > f[x_Integer?Positive] := x^3 > > f[3] > > f[3.1] > > f[-3] > > > 27 > > f[3.1] > > f[-3] > > > and I also know how to set default to an argument of a function like > > so: > > > Clear[f] > > f[x_:3] > > f[] > > > 27 > > > How do I do both i.e., specify head and default value? > > > Thanks, > > > NP