On Mon, May 22, 2017 at 3:25 PM, Luc Fabresse <luc.fabresse@gmail.com> wrote:Hi,Following Pharo Days, I brainstormed about some possible class definition syntaxes.What I have in mind:"basic mechanics, only THIS one in the image!"ClassDefinition newsuperclass: Object; "optional. If not specified, Object by default ;-)"name: #A; "optional and create an anonymous class if not specified"instVars: 'a b c';��traits: {TEquality};package: 'Plop';createClass. " this message sent might be hidden by the browser when accepting""---------------""Some IDEAS (but I did not find one that I really like) of scripting/shorter syntaxes that must ALWAYS end up calling the above basic mechanics at the end:"Class fromDefinition: [ :def |def name: #sub;instVars: 'w r g';superclass: Object ].Object subclass ��"<-- returns a subclass of Object but the problem is that the new class is muted(btw, I assume you mean mutated.) ����each time and the class definition is not explicit"name: #A;ivs: 'a b c';traits: { TEquality }.What about...�� ��Object subclass: [ :def | defname: 'MyClass' ; �� �� ��"optional and create an anonymous class if not specified"instanceVariables: 'a b c' ;�� �� �� �� classVariables: 'M N O';���� �� �� �� classInstanceVariables: 'x y z' ;traits: {TEquality} ;package: 'Plop'].�� ��Object>>subclass: builderBlock�� �� �� ��^ (builderBlock value:��ClassDefinition new)��createClass�� �� ��or similar to Guille's declarative proposal...�� ��Object subclass: {�� �� �� ��name: 'Myclass',�� a: InstVar,�� b: InstVar,�� �� �� c: InstVar�� ��}cheers -ben