;; -*- scheme -*- ;; Cd to snot/snot/, run "mzscheme start.ss" and paste the 3 ;; expressions to stdin, waiting for the reply before pasting the next ;; one. The last expression will cause a crash. ;; All the approaches I tried to make an automated crash script made ;; the bug disappear.. ;; EXP1 (eval (eval/continue (quote snot-continue) (quote (thread (lambda nil (box-module-string "/" "#lang scheme/base (require scheme/control) (provide make-counter state) (define state (make-parameter #f)) (define (suspend/param param) (let ((state+value (let ((state (param))) (shift k (lambda (value) (k (cons state value))))))) (param (car state+value)) (cdr state+value))) (define (make-counter) (reset (parameterize ((state 0)) (let loop () (printf \"state = ~s\\n\" (state)) (let ((hole (suspend/param state))) (printf \"hole = ~s\\n\" hole)) (state (add1 (state))) (loop))))) ")))))) ;; EXP2 (message (begin (emacs-display " ") (emacs-limit-output (lambda nil (language-rep (quote current) "(define x (make-counter))"))) (emacs-display-prompt))) ;; EXP3 (message (begin (emacs-display " ") (emacs-limit-output (lambda nil (language-rep (quote current) "(x 123)"))) (emacs-display-prompt)))