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
