(module explore mzscheme (require (lib "list.ss")) (define choices null) (define (flip-coin) (let/cc k (set! choices (cons (lambda () (k #t)) (cons (lambda () (k #f)) choices))) (let ([choice (list-ref choices (random (length choices)))]) (set! choices (remq choice choices)) (choice)))) (define (random-walk so-far) (let ([v (flip-coin)]) (let ([so-far (append so-far (list v))]) (printf "Trying: ~a~n" so-far) (random-walk so-far)))) (random-walk null))