Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

MetaModel notes

2 views
Skip to first unread message

Nathan Gray

unread,
Aug 11, 2005, 3:39:18 PM8/11/05
to perl6-c...@perl.org
My notes to myself as I read the 2005-08-04 IRC discussion of
the MetaModel:

http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=356#l564

Clarification, corrections, and questions welcome.

Master document at
http://svn.openfoundry.org/pugs/perl5/Perl6-MetaModel/docs/20_000_ft_view.txt

+--------------+
| |
| Instance |
| |
+--------------+
| +--------------+
+--------------+ | |
| | | Role |
| Class | | |
| | +--------------+
+--------------+
|
+--------------+
| |
| MetaClass |
| |
+--------------+

Instance:

* holds an instance of the class it is created from
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=402#l646

* has attributes
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=362#l572

* holds instance data, which maps member names (in the MetaClass?)
to values (in the MetaClass instance?)
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=435#l695

* $?CLASS and $?SELF are lexicals which are rebound at each method
execution
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=377#l607

* calling 'next METHOD' jumps to a label (called 'METHOD'?) by searching
outside the method, back to the dispatcher, then to the resume loop
(this is really fuzzy to me, the description more than the concept, I
think)
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=379#l609

Class:

* is a singleton
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=835#l1333

* holds an instance of the MetaClass it is created from
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=480#l769

* has a 'bless' method which takes a candidate and returns an instance
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=405#l650

* is a thin layer between the meta and user worlds
(see also 10000 ft view
http://svn.openfoundry.org/pugs/perl5/Perl6-MetaModel/docs/10_000_ft_view.pod)
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-05,Fri&sel=619#l1125

* is a mapping between Name and ID (in member fields)
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=475#l763

* all questions asked of a class are passed to its metaclass
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=628#l1023

MetaClass:

* is a singleton
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=835#l1333

* has attribute definitions
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=364#l575

* has _add_method to add methods (all instances magically have the new
method available to them)
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=507#l818

* private attributes can only be accessed from methods defined in the same
class as the private attribute
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=585#l938

* examples: Perl6::Instance (which defines the UNIVERSAL:: methods 'isa',
'can', and 'AUTOLOAD')
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=653#l1067
http://colabti.de/irclogger/irclogger_log/perl6?date=2005-08-04,Thu&sel=655#l1072

Role:

Hmm. Nothing to see hear.

-kolibrie

0 new messages