function is not an object

G

Guest

Somebody said:
So function is not an object.

Except you can't create them with 'new',
so their lifetime options are kind'a limit.
The question of whether a function is an object
will vary from one programming language to
another. In the C family, a function is not
a first-class object. In a functional language
it is. In Python, a function looks like a first-class
object. However, Python and functional languages
implement everything by reference, under the hood.

In most languages, to treat a function as parameter
to another function, we have to create a reference
to it. In the C family, the reference is a pointer.

C# has a clever approach to this problem with
delegates. I am not sure how delegates are
implemented by the compiler. The Java approach
to this problem is rather ponderous, but then
Java seems to take the long way around for a
lot of things that ought to be more direct.

In defense of Java, the designers were simply
trying to preserve consistency. Which reminds
me of a quotation from R.W. Emerson, "A foolish
consistency is a hobgoblin of little minds." No one
actually knows what that quotation means, but it
is often quoted whenever anyone brings up the
notion of "consistency."

The question of whether a function, in the sense
of a programming artifact, can have state will
depend on the design of that function. Ideally,
a function will not have its own state, but will
return information about the state of some
attribute of an object. Ideally, a function will
not have side-effects that change the state of
an attribute.

But we're talking about programming here so
ideals have nothing to do with anything. Under
the constraints of any existing programming
language, there are no ideals. Everything
we do is constrained by the rules of the
language we choose to use.

From a mathematical view, a function is not
an object. But that is another discussion for
another day.

Richard Riehle
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,431
Messages
2,571,677
Members
48,796
Latest member
Greg L.

Latest Threads

Top