On 31 Aug 2010, at 12:33, Jan-Paul Bultmann wrote:

> I have always wondered why the sublcass: part in smalltalks class definitions 
> is always called a message, because the following name:block pairs don't 
> correspond to any smalltalk structure, so it's rather a giant syntax blob.


In traditional Smalltalk, #subclass: really is a message.  You send it to an 
existing class, with the name of the new subclass as the argument, and it 
returns a new class.  You then send it messages that define methods.  

This is part of the underlying philosophy of Smalltalk.  There is no concept of 
source code in Smalltalk - it's an entirely interactive system, and you build a 
program by having a dialogue with the existing environment.

In Pragmatic Smalltalk, we (more or less) copy GNU Smalltalk syntax.  GST 
introduces the idea of source code to Smalltalk, and abuses the syntax slightly 
to allow static class definitions.  There are some inconsistencies.  For 
example, GST uses the same syntax for instance variable definitions that 
Smalltalk uses for local variable definitions.  In contrast, Smalltalk-80 lets 
you add instance variables by sending messages to the class.

One of the things that I want to add to LanguageKit is the ability to get a 
copy of the AST from a compiled block.  When this is done, it will be possible 
to support Smalltalk-80-style interaction; you will be able to send a 
-subclass: message to a new class, then send additional messages to register 
blocks as methods. 

David

-- Sent from my Cray X1
_______________________________________________
Etoile-discuss mailing list
[email protected]
https://mail.gna.org/listinfo/etoile-discuss

Répondre à