UNB/ CS/ David Bremner/ teaching/ cs4613/ lectures/ lecture16/ fweb-cc2.rkt
#lang plait
(define (done _) (error 'resume "nothing suspended."))

(define resumer (box done))

(define (resume)
  (let ([next (unbox resumer)])
    (begin 
      (set-box! resumer done)
      (next 'dummy))))

(define (yield prompt)
  (let/cc k 
    (begin (set-box! resumer k)
           (error 'yield prompt))))

(define (output n) (error 'output (to-string n)))

(define (get-num prompt)
  (begin
    (yield "(resume) to continue")
    (display prompt)
    (s-exp->number (read))))

(define (example)
  (output
   (+ (get-num "First number: ")
      (get-num "Second number: "))))