Data commit
This commit is contained in:
parent
7387c8f97b
commit
cb5bb5e222
199093 changed files with 3378972 additions and 0 deletions
12
Task/Jump-anywhere/Racket/jump-anywhere-1.rkt
Normal file
12
Task/Jump-anywhere/Racket/jump-anywhere-1.rkt
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
#lang racket
|
||||
(define (never-divides-by-zero return)
|
||||
(displayln "I'm here")
|
||||
(return "Leaving")
|
||||
(displayln "Never going to reach this")
|
||||
(/ 1 0))
|
||||
|
||||
(call/cc never-divides-by-zero)
|
||||
|
||||
; outputs:
|
||||
; I'm here
|
||||
; "Leaving" (because that's what the function returns)
|
||||
21
Task/Jump-anywhere/Racket/jump-anywhere-2.rkt
Normal file
21
Task/Jump-anywhere/Racket/jump-anywhere-2.rkt
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
#lang racket
|
||||
;; [LISTOF X] -> ( -> X u 'you-fell-off-the-end-off-the-list)
|
||||
(define (generate-one-element-at-a-time a-list)
|
||||
;; (-> X u 'you-fell-off-the-end-off-the-list)
|
||||
;; this is the actual generator, producing one item from a-list at a time
|
||||
(define (generator)
|
||||
(call/cc control-state))
|
||||
;; [CONTINUATION X] -> EMPTY
|
||||
;; hand the next item from a-list to "return" (or an end-of-list marker)'
|
||||
(define (control-state return)
|
||||
(for-each
|
||||
(lambda (an-element-from-a-list)
|
||||
(set! return ;; fixed
|
||||
(call/cc
|
||||
(lambda (resume-here)
|
||||
(set! control-state resume-here)
|
||||
(return an-element-from-a-list)))))
|
||||
a-list)
|
||||
(return 'you-fell-off-the-end-off-the-list))
|
||||
;; time to return the generator
|
||||
generator)
|
||||
Loading…
Add table
Add a link
Reference in a new issue