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]:=

Out[1]=
Symbol

In[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