Re: Not accepting function as parameter
- To: mathgroup at smc.vnet.net
- Subject: [mg71694] Re: Not accepting function as parameter
- From: "Philipp" <Philipp.M.O at gmail.com>
- Date: Sun, 26 Nov 2006 05:49:34 -0500 (EST)
- References: <ekbmj4$f87$1@smc.vnet.net>
Unfortunately, Sin is not a function
In[]:= Head[Sin]
Out[]= Symbol
You have the following options:
1. Keep your definition of happy and pass Sin as a function, i.e.,
In[]:= happy[Sin[#] &, 1, 21] // N
Out[]= 0.0199987
2. Redefine your function to accept both Heads
In[]:= veryhappy[f : (_Symbol | _Function), a_Integer, b_Integer] :=
Module[{width = (b - a)/1000}, f[width]];
Now,
In[]:= veryhappy[Sin, 1, 21] // N
veryhappy[Sin[#] &, 1, 21] // N
veryhappy[{Sin}, 1, 21]
give
Out[]= 0.0199987
0.0199987
veryhappy[{Sin}, 1, 21]
Cheers,
Philipp.
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.