REPOST: Re: Python and Ruby: a comparison

Alex Martelli aleax at aleax.it
Tue Jan 1 04:28:11 EST 2002


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




More information about the Python-list mailing list