A RetroSearch Logo

Home - News ( United States | United Kingdom | Italy | Germany ) - Football scores

Search Query:

Showing content from https://mail.python.org/pipermail/python-dev/1999-May/095226.html below:

[Python-Dev] 'stackless' python?

[Python-Dev] 'stackless' python?Tim Peters tim_one at email.msn.com
Tue May 18 06:45:52 CEST 1999
[Christian Tismer]
> ...
> Yup. With a little counting, it was easy to survive:
>
> def main():
>     global a
>     a=2
>     thing (5)
>     a=a-1
>     if a:
>         saved.throw (0)

Did "a" really need to be global here?  I hope you see the same behavior
without the "global a"; e.g., this Scheme:

(define -cont- #f)

(define thing
  (lambda (n)
    (if (= n 2) (call/cc (lambda (k) (set! -cont- k))))
    (display "n == ") (display n) (newline)
    (if (= n 0)
	(begin (display "Done!") (newline))
	(thing (- n 1)))))

(define main
  (lambda ()
    (let ((a 2))
      (thing 5)
      (display "a is ") (display a) (newline)
      (set! a (- a 1))
      (if (> a 0)
	  (-cont- #f)))))

(main)

prints:

n == 5
n == 4
n == 3
n == 2
n == 1
n == 0
Done!
a is 2
n == 2
n == 1
n == 0
Done!
a is 1

Or does brute-force frame-copying cause the continuation to set "a" back to
2 each time?

> Weird enough

Par for the continuation course!  They're nasty when eaten raw.

> and needs a much better interface.

Ya, like screw 'em and use threads <wink>.

> But finally I'm quite happy that it worked so smoothly
> after just a couple of hours (well, about six :)

Yup!  Playing with Python internals is a treat.

to-be-continued-ly y'rs  - tim




More information about the Python-Dev mailing list

RetroSearch is an open source project built by @garambo | Open a GitHub Issue

Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo

HTML: 3.2 | Encoding: UTF-8 | Version: 0.7.4