From: Alex Martelli Date: 2002-01-01T18:44:20+09:00 Subject: [ruby-talk:29942] Re: REPOST: Re: Python and Ruby: a comparison Edward Diener wrote: > CLR is a lowest common denominator for language ideas which MS supports. > What happens when a language has good ideas which are more advanced than > what CLR supports. It is left out of CLR, or included into it with those > ideas stripped from the language to accomodate CLR. Sometimes the Holy Your assertions are seriously counterfactual. Check the list at, e.g., http://www.dotnet-fr.org/links.php3?op=viewslink&sid=15. Consider, say, the Gasgow Haskell Compiler for .NET. Obviously, Haskell 98 has quite a few "good ideas which are more advanced" than anything in .NET, such as lazy evaluation, typeclasses, immutable data, monads... So, was Haskell "left out of CLR"? Not at all, Glasgow Haskell supports CLR. Were the advanced ideas that are 99% of Haskell "stripped from the language"? Again, not at all, obviously. Pretty evidently, instead, what happened (and the same can be said for Mercury, Oberon, APL, and so on) is that a distinction is drawn between a language and its "foreign function interface" (traditional lisp/fp terminology for: how a language interfaces to "foreign" pieces of code, those written in other languages; sometimes more generally called a "foreign language interface"). It's pretty obvious, isn't it? The CLR dictates a certain MINIMAL set of functionality that a language must support to fully integrate with it. In no way does it constrain any _extra_ functionality the language may wish to add. Such extras will not be seamlessly made available via the CLR sanctioned "view" of any component written in the language, of course (eh yes, it IS pretty obvious: if no other language has ever yet invented the sublime concept of superinfermollification that my new Aretinus language will introduce tomorrow, how could my components expose and offer superinfermollification to other components coded in other inferior languages?!). But that doesn't, by any stretch of the imagination, imply either that the language is "left out of the CLR", nor of course that the language is stripped of its original ideas. I'll still use (e.g.) Mercury backtracking, Haskell typeclasses, or Oberon active-objects, even if "lesser" languages will obviously not "see" them at the interface! Alex