Dan Sugalski <[EMAIL PROTECTED]> writes:

> Working on this. If everyone wants to hash out the sort of semantics
> they're thinking about, we can probably get to closure reasonably fast
> and get things designed and implemented quickly.

My scheme implementation is a working (a little bit hacky but
working) implementation of closures.

The following things are definitly needed:
  * get_current_lexical_scope or peek_pad
  * set_current_lexical_scope or push_pad/pop_pad

The following can be vtable operations on a Scratchpad PMC or
dedicated ops working on the current Scratchpad.
  * clone
  * increase of size (at least by 1)
  * get keyed with STRING
  * set keyed with STRING (for changing an already existing binding)
  * set keyed with -1;STRING (for new definitions)

These to are needed to do lexical addressing
  * get keyed with INTVAL;INTVAL
  * set keyed with INTVAL;INTVAL

These may be nice but not needed for scheme
  * get keyed with INTVAL (getting direct to the Hashes)
  * set keyed with INTVAL;STRING
  * new (create an empty Pad, sometimes at startup parrot must do
    this)
  * decrease of size

The Sub.pmc may do the following things (but it shouldn't be the only
way to do this)
  - get the current scope at creation time and save it
  - push the current scope and make the saved on current at invoke
    time
  - pop the current pad before return

hope that helps
b.
-- 
Juergen Boemmels                        [EMAIL PROTECTED]
Fachbereich Physik                      Tel: ++49-(0)631-205-2817
Universitaet Kaiserslautern             Fax: ++49-(0)631-205-3906
PGP Key fingerprint = 9F 56 54 3D 45 C1 32 6F  23 F6 C7 2F 85 93 DD 47

Reply via email to