PasteRack.org
Paste # 61799
2024-05-07 05:50:20

Fork as a new paste.

Paste viewed 134 times.


Embed:

  1. #lang racket/base
  2. (let ([tag (make-continuation-prompt-tag)])
  3.         (println "111")
  4.         (println (string-append "222"
  5.                 (call-with-continuation-prompt
  6.                         (lambda ()
  7.                                 (let ([data 0])
  8.                                         (println (string-append "333"
  9.                                                 (call-with-composable-continuation
  10.                                                         (lambda (k)
  11.                                                                 (println "---")
  12.                                                                 (println (string-append "444" (k "555"))) ; 4: pop&, 5: push&
  13.                                                                 ;; (abort-current-continuation tag "bbb")
  14.                                                                 "666")
  15.                                                         tag)))
  16.                                         (println (string-append "zzz"
  17.                                                 (call-with-composable-continuation
  18.                                                         (lambda (k)
  19.                                                                 (println "+++")
  20.                                                                 (println (string-append "xxx" (k "ccc"))) ; x: pop|, c: push|
  21.                                                                 ;; (abort-current-continuation tag "bbb")
  22.                                                                 "ddd")
  23.                                                         tag)))
  24.                                         (println (string-append "qwe"
  25.                                                 (call-with-composable-continuation
  26.                                                         (lambda (k)
  27.                                                                 (println "===")
  28.                                                                 (println (string-append "wer" (k "ert"))) ; x: pop|, c: push|
  29.                                                                 ;; (abort-current-continuation tag "bbb")
  30.                                                                 "ddd")
  31.                                                         tag)))
  32.                                         ;(println data)
  33.                                         (set! data (+ data 1))
  34.                                         (if (= data 56)
  35.                                                 (abort-current-continuation tag "bbb")
  36.                                                 "777")))
  37.                         tag
  38.                         (lambda (k)
  39.                                 (println (string-append "888" k))
  40.                                 "aaa"
  41.                                 )))))
  42.         (println "999")

=>