19 lines
457 B
Scheme
19 lines
457 B
Scheme
(define-module (gib-gab-gob lib)
|
|
#:use-module (goblins)
|
|
#:export (selfish-spawn))
|
|
|
|
(define (selfish-spawn constructor . args)
|
|
|
|
(define (^selfish bcom)
|
|
(lambda (self)
|
|
(bcom (apply constructor bcom self args))))
|
|
|
|
(let ((name (procedure-property constructor 'name)))
|
|
(set-procedure-property! ^selfish 'name name))
|
|
|
|
(let ((self (spawn ^selfish)))
|
|
(pk self)
|
|
;; now transition to the version with self
|
|
($ self self)
|
|
self))
|