Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- (interpret
- '(define (generalized-fold knull1? kar1 kdr1 glist1 kons2 knil2)
- (define (lp glist1 glist2)
- (if (knull1? glist1) glist2
- (lp (kdr1 glist1) (kons2 (kar1 glist1) glist2))))
- (lp glist1 knil2)))
- (interpret '(define next! #f))
- (interpret '(define terminate! #f))
- (interpret '(define %escape #f))
- (interpret '(call/cc (lambda (k) (set! %escape k))))
- (interpret
- '(define (continued-fraction x)
- (define terminate? #f)
- (define p0 1) (define p1 0) (define q0 0) (define q1 1)
- (set! terminate! (lambda () (set! terminate? #t) (next!)))
- (generalized-fold
- (lambda (_) terminate?)
- (lambda (x)
- (define x0 (inexact->exact (floor x)))
- (call/cc (lambda (k2)
- (define p2 (+ (* x0 p1) p0)) (define q2 (+ (* x0 q1) q0))
- (set! p0 p1) (set! q0 q1) (set! p1 p2) (set! q1 q2)
- (set! next! k2)
- (%escape (string->symbol {[q1]/[p1]})))) ; JScheme's quasi-string
- x0)
- (lambda (x) (/ 1 (- x (floor x))))
- x cons '())))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement