"Jonathan Sillito" <[EMAIL PROTECTED]> writes:
>> -----Original Message-----
>> From: Sean O'Rourke [mailto:[EMAIL PROTECTED]]
>>
>> I think I didn't look through the patch queue carefully enough ;).  I
>> gather that it's accepted practice (or something like that) to use an
>> array of pointers instead of links to avoid having to do a traversal when
>> accessing outer scopes, so that's why I did things this way.  Out of
>> curiosity, how were you planning to handle e.g. recursive functions?
>
> Umm, I am not sure ...
>
>> Unless I'm misreading your patch, it always sets the parent static scope
>> to the parent dynamic scope, which often isn't what one wants.
>
> I see. So just to see if I understand things correctly, consider an example
> in some made up language:
>
>   function get_counter(increment) {
>     var last = 0
>
>     function counter() {
>       last = last + increment
>       println last
>     }
>
>     return counter
>   }

[...]

> get_counter:
>     new_pad 1

Doesn't this violate the 'caller saves' principle, making it hard to
do tail call optimization? Would it make sense to move the creation of
a new pad into the Sub's invoke method?


[...]

-- 
Piers

   "It is a truth universally acknowledged that a language in
    possession of a rich syntax must be in need of a rewrite."
         -- Jane Austen?

Reply via email to