The Ghost In The Machine wrote:
> Delegates.  This Microsoftish concept is a bit hard for me
> to pin down (it feels a lot like a C++ method pointer --
> or even a C function pointer) but is occasionally touted
> as an advantage for such languages as C++ and the ill-fated
> Java++, which had them as part of the language.
> 

They're basically "method pointers" bound to an instance. With some 
syntactic sugar and (even in my opinion superfluous) typechecks thrown 
around. 2.0 also encompasses lambdas / closures under the concept. I'm 
eyeing Nemerle for functional goodness under .NET - some of the tricks 
up that language's sleeve look impressive. (Notably native or 
provided-with-standard-library pattern-matching against XML.)

> C#'s event handling emulates this concept to some extent
> using the += operator, though I doubt they do it all that
> generally -- or all that well.
> 

I have a slight hunch it just compiles to a list of event handler 
delegates that gets invoked sequentially - not really function 
combination. I don't even know how the return value of a composite 
delegate that's not defined to return void is defined.

As to all that well, you don't want to get me started. First-class 
language support for events should NOT crash and burn in a torrent of 
tears on a null pointer EVER - an event just not being handled doesn't 
seem like an edge case worth the error to me.

> GUI support -- this is primarily API/library but might
> be put in the language if it makes sense

Naw, not really. GUI toolkit holy wars are particularly intricate, and 
you'd either have to bind to one toolkit on supported platforms, or make 
an abstract abstract one. I can't decide which is worse. (AWT anyone?)

David Vallner