elk/examples/scheme/cps.scm

18 lines
313 B
Scheme

;;; -*-Scheme-*-
(define (identity value) value)
(define (gcd a b) (cps-gcd a b identity))
(define (cps-gcd a b k)
(if (= b 0)
(k a)
(cps-remainder a b (lambda (v) (cps-gcd b v k)))))
(define (cps-remainder n d k)
(if (< n d)
(k n)
(cps-remainder (- n d) d k)))
(print (gcd 4 6))