I'm just joining this discussion. But, I can't help being reminded about where I was at in 2002 with C++ claiming that template basesd metaprogramming was revolutionary, when in fact, it was too complicated for most people to use to solve real world problems,
and as a result of that (and other things) alot of those developers moved to the much more "designed with the needs of the developer" C# / .NET 1.1.
I bought pared down generics, made sense to type collections for many reasons. Solved a very common problem.
Now, I think that some of this stuff wont ever be used as much more than an intellectual curiosity - just like bind2() and whatnot wasn't ever used in C++ on any large scale, stl/boost whatever. They just didnt't meet any real need in particular, other than
the needs of the developers to feel smart - and they had developers writing code that DID NOTHING (it was generic though, and it WOULD work on antyhing), but would if only if YOU used it correctly (Assuming you could figure out how). Which restates the last
bit - lots of work went into writing generic libraries which never were used because they were felt to be WAY out of touch with the needs joe blow coder.
A path siimiar to this killed C++ in my mind. Why do you feel that this wont end in the same result.
Also - why do you have to even bother the developer with this at all. Can you do this using the intermediate representation? just like out of order execution of CPU instructions.
The last thing that a developer likes to see are things in his code that he doesnt fully understand - those most likely get rewritten in the real world - since who wants to maintain code they dont understand.