#lang racket (define lista-de-hilos '()) (define hilo (lambda (h) (set! lista-de-hilos (append lista-de-hilos (list h))))) (define dale (lambda () (let ((p (car lista-de-hilos))) (set! lista-de-hilos (cdr lista-de-hilos)) (p)))) (define aguanta (lambda () (call-with-current-continuation (lambda (k) (hilo (lambda () (k #f))) (dale))))) (hilo (lambda () (let f () (aguanta) (display "f") (f)))) (hilo (lambda () (let f () (aguanta) (display "o") (f)))) (hilo (lambda () (let f () (aguanta) (display "o") (f)))) (hilo (lambda () (let f () (aguanta) (newline) (f))))