This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: Unnamed functions, functors or, more formally, function literals
- From: "Kris Warkentin" <kewarken at qnx dot com>
- To: <pkoning at equallogic dot com>, <sd70030 at lanet dot lv>, "Robert Dewar" <dewar at gnat dot com>
- Cc: <gcc at gcc dot gnu dot org>
- Date: Fri, 15 Mar 2002 12:55:49 -0500
- Subject: Re: Unnamed functions, functors or, more formally, function literals
- References: <20020315160916.06CD9F28C9@nile.gnat.com>
----- Original Message -----
From: "Robert Dewar" <dewar@gnat.com>
To: <kewarken@qnx.com>; <pkoning@equallogic.com>; <sd70030@lanet.lv>
Cc: <gcc@gcc.gnu.org>
Sent: Friday, March 15, 2002 11:09 AM
Subject: Re: Unnamed functions, functors or, more formally, function
literals
> <<I'm not saying that this should be added to C since, well, then it
wouldn't
> be C now would it? But I wouldn't write them off as less than useful.
Try
> using it for GUI programming some time. It's wonderful to pass a function
> to be called when such and such button is pressed without having to define
> it in the global or class namespace, especially if the action for the
button
> is something very simple.
> >>
>
> Puzzlement ... in GNU C, you can perfectly well pass the address of a
> local function. Now if you are saying you want full closures so that there
No, I was thinking along the lines of java's anonymous inner classes or
Python's lambda functions or even Perl's anonymous functions:
Like in perl where you go $myfunc = sub BLOCK and now you have a reference
to an anonymous function that you can pass around to do things with. It's
nice to avoid having a full declaration of a function like
int
mystruct_do_something(struct mystruct *p)
{
/* blah */
}
so you can go:
mystruct_apply_func(struct mystruct *p, mystruct_do_something);
when you really just want:
mystruct_apply_func(struct mystruct *p, imaginary_lambda_op{ /*blah*/ });
cheers,
Kris
> are no out-of-scope problems, that's OK, but actually not many languages
> *do* have full closures, and they are very hard to implement in the
absence
> of garbage collection (in fact I don't see anyway of implementing them
with
> no GC).
>
> Certainly the suggestion of adding full closures to C is way out of scope.
>
>