diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2021-07-27 11:37:47 +0200 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2021-07-27 11:37:47 +0200 |
| commit | 726c5ce4decbcd354aff50d1a486bca8c2fa33c1 (patch) | |
| tree | e96850f51e63789d6dcba3470de1258ec9a6232b /scheme/utils.scm | |
| parent | a13cc209e002a72a18c659d22ed39dbd99be2fcd (diff) | |
| download | project_euler-726c5ce4decbcd354aff50d1a486bca8c2fa33c1.tar.gz project_euler-726c5ce4decbcd354aff50d1a486bca8c2fa33c1.tar.bz2 project_euler-726c5ce4decbcd354aff50d1a486bca8c2fa33c1.zip | |
problem 1 2 in scheme
Diffstat (limited to 'scheme/utils.scm')
| -rw-r--r-- | scheme/utils.scm | 22 |
1 files changed, 22 insertions, 0 deletions
diff --git a/scheme/utils.scm b/scheme/utils.scm new file mode 100644 index 0000000..6ba98cd --- /dev/null +++ b/scheme/utils.scm @@ -0,0 +1,22 @@ +(define fold + (lambda (f acc xs) + (if (null? xs) + acc + (fold f (f acc (car xs)) (cdr xs))))) + +(define sum + (lambda (xs) (fold + 0 xs))) + +(define range + (lambda (start stop step) + (if (>= start stop) + '() + (cons start (range (+ start step) stop step))))) + +(define filter + (lambda (predicate xs) + (if (null? xs) + '() + (let* ((x (car xs)) + (filtered (filter predicate (cdr xs)))) + (if (predicate x) (cons x filtered) filtered))))) |
