PasteRack.org
Paste # 52846
2024-02-05 14:53:47

Fork as a new paste.

Paste viewed 771 times.


Embed:

  1. #lang racket/base
  2. (require racket/control)
  3.  
  4. (define (tick)
  5.   (shift k (lambda (state) ((k (void)) (+ state 1)))))
  6.  
  7. (define (get)
  8.   (shift k (lambda (state) ((k state) state))))
  9.  
  10. (define (run-state thunk)
  11.   ((reset (let ([result (thunk)])
  12.             (lambda (state) result)))
  13.    0))
  14.  
  15. (run-state tick)
  16. (run-state get)
  17. (run-state (lambda ()
  18.              (tick)
  19.              (get)))

=>

0

1