Re: FunctionQ?

• To: mathgroup at smc.vnet.net
• Subject: [mg113311] Re: FunctionQ?
• From: Pierre Albarede <pa.news at free.fr>
• Date: Sat, 23 Oct 2010 07:05:28 -0400 (EDT)
• References: <i9r7vd\$hoo\$1@smc.vnet.net>

```On Oct 22, 7:37 am, Sam Takoy <sam.ta... at yahoo.com> wrote:

> How does one tell whether a variable is a function?
> More specifically, how does one tell whether a variable is a function of
> two arguments?

If an expression has the head Function, for example, Function[2#] or
2#&, then it is a function.
But the converse is not true.  A lot of functions do not have the head
Function, for example, Head@Sin -> Symbol.

Any symbol with no rules can be considered as a function of any number
of argument, for example, ClearAll@f1; f1[x] is a valid expression.

You can check if some expression is a function of 2 arguments by
trying :

Check[Sin[x, y], "not a function of 2", Sin::argx]
->
Sin::argx: Sin called with 2 arguments; 1 argument is expected. >>
not a function of 2

Check[Log[x, y], "not a function of 2", Sin::argx]
->
Log[y]/Log[x]

Log can also be a function of 1.

> Finally, how does one tell whether a variable is a function of two
> arguments that returns an array?

I have already explained the first part of the question.  Now, how to
tell whether an expresion is an array ?  I guess you mean array =
matrix.  You can check if Transpose works :

Check[Transpose@Array[f1, {4, 5}];, "not a matrix"]

Check[Transpose@{{x}, {x, y}};, "not a matrix"]

Putting those ideas into general programs would require many
programming skils but it may be a waste of time.  It is not the
philosophy of Mathematica to check types carefully, because
Mathematica is interpreted and very tolerant with respect to types.  A
function will accomodate any type of argument, provided what you are
doing with it makes sense.  If not, you will see a flow of error
messages.

```

• Prev by Date: Re: Fitting the solution of a differential equation to a data set
• Next by Date: Re: Sin*Cos + Log
• Previous by thread: Re: FunctionQ?
• Next by thread: Two questions related to Arrays