diff options
author | Jed Barber <jjbarber@y7mail.com> | 2015-10-25 12:36:33 +1100 |
---|---|---|
committer | Jed Barber <jjbarber@y7mail.com> | 2015-10-25 12:36:33 +1100 |
commit | 0f9a7c7fb9d8f1c4fda02e325771ce7b3f75c637 (patch) | |
tree | 73a6540811c071ddf649ec1bd601a4ead5f7fbd6 /sieve/sundaram.scm | |
parent | 0a48ed023ea65d75851ba2a4151100602695a2fd (diff) |
Factored out common scheme code into modules
Diffstat (limited to 'sieve/sundaram.scm')
-rw-r--r-- | sieve/sundaram.scm | 36 |
1 files changed, 8 insertions, 28 deletions
diff --git a/sieve/sundaram.scm b/sieve/sundaram.scm index 384bc3d..8e5bf53 100644 --- a/sieve/sundaram.scm +++ b/sieve/sundaram.scm @@ -1,36 +1,16 @@ -(use-modules (srfi srfi-41)) +(add-to-load-path (dirname (current-filename))) +(import + (srfi srfi-41) + (extra-functional) + (my-streams)) -(define base (stream-from 1)) - - - -(define (curry f) - (lambda (x) - (lambda (y) - (f x y)))) - - -(define-stream (stream-ordered-diff xstrm ystrm) - (stream-match xstrm (() '()) ((x . xs) - (stream-match ystrm (() xstrm) ((y . ys) - (cond ((< x y) (stream-cons x (stream-ordered-diff xs ystrm))) - ((> x y) (stream-ordered-diff xstrm ys)) - (else (stream-ordered-diff xs ys)))))))) - - - -(define-stream (stream-merge xstrm ystrm) - (stream-match xstrm (() ystrm) ((x . xs) - (stream-match ystrm (() xstrm) ((y . ys) - (cond ((< x y) (stream-cons x (stream-merge xs ystrm))) - ((> x y) (stream-cons y (stream-merge xstrm ys))) - (else (stream-cons x (stream-merge xs ys))))))))) +(define base (stream-from 1)) @@ -41,7 +21,7 @@ (define-stream (i-stream i) (stream-map - ((curry f) i) + (part f i) (stream-from i))) @@ -58,7 +38,7 @@ (define-stream (sieve input) (stream-map - (lambda (x) (+ 1 (* 2 x))) + (compose (part + 1) (part * 2)) (stream-ordered-diff input ij-stream))) |