MathGroup Archive 2006

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: Not accepting function as parameter

  • To: mathgroup at smc.vnet.net
  • Subject: [mg71697] Re: Not accepting function as parameter
  • From: Jean-Marc Gulliet <jeanmarc.gulliet at gmail.com>
  • Date: Mon, 27 Nov 2006 04:03:59 -0500 (EST)
  • Organization: The Open University, Milton Keynes, UK
  • References: <ekbmj4$f87$1@smc.vnet.net>

wooks wrote:
> This is a piece of experimental code. The function happy does not
> evaluate whenever I pass f as a parameter as in the example below.
> 
> Clear[happy]
> happy[ f_Function, a_Integer, b_Integer] := Module[{width = (b -
> a)/1000},
>        f[width]];
> 
> happy[ Sin, 1, 21]
> 
> I'd be grateful for help.
> 
The issue is that built-in mathematical functions such as Sin, Cos, Log, 
etc, have _Symbol_ for head and not _Function_.  On the other hand, pure 
function have _Function_ for head.  You can test the head of any 
Mathematica expression with /Head/ (See below for an example.) 
Therefore, you must add an alternative condition to the pattern f to 
take in account both possibilities.

In[1]:=
Head[Sin]

Out[1]=
Symbol

In[2]:=
Head[#1^2 & ]

Out[2]=
Function

In[3]:=
Clear[happy]
happy[(f_Symbol) | (f_Function), a_Integer,
     b_Integer] := Module[{width = (b - a)/1000},
     f[width]];
happy[Sin, 1, 21]
happy[#1^2 & , 1, 21]
happy[N[#1^2] & , 1, 21]

Out[5]=
Sin[1/50]

Out[6]=
1/2500

Out[7]=
0.0004

HTH,
Jean-Marc


  • Prev by Date: Re: Word permutations - frustrated by lists.
  • Next by Date: Re: Word permutations - frustrated by lists.
  • Previous by thread: Re: Re: Not accepting function as parameter
  • Next by thread: RE: Not accepting function as parameter