diff options
| author | Charles Cabergs <me@cacharle.xyz> | 2022-03-05 11:35:32 +0100 |
|---|---|---|
| committer | Charles Cabergs <me@cacharle.xyz> | 2022-03-05 11:35:32 +0100 |
| commit | 325a7d29a4bd4665c741aa0497eabc77a926844d (patch) | |
| tree | 24d98f18c92fae9d6ca0423cc01de96404713a04 | |
| parent | 726c5ce4decbcd354aff50d1a486bca8c2fa33c1 (diff) | |
| download | project_euler-325a7d29a4bd4665c741aa0497eabc77a926844d.tar.gz project_euler-325a7d29a4bd4665c741aa0497eabc77a926844d.tar.bz2 project_euler-325a7d29a4bd4665c741aa0497eabc77a926844d.zip | |
Updated scheme setup
| -rw-r--r-- | .gitignore | 1 | ||||
| -rw-r--r-- | scheme/002-even_fibonacci_numbers.scm | 13 | ||||
| -rw-r--r-- | scheme/Makefile | 19 | ||||
| -rw-r--r-- | scheme/utils.scm | 34 |
4 files changed, 41 insertions, 26 deletions
@@ -15,5 +15,6 @@ rust/* scheme/* !scheme/*.scm +!scheme/Makefile tags diff --git a/scheme/002-even_fibonacci_numbers.scm b/scheme/002-even_fibonacci_numbers.scm index 65b567d..d38eaf5 100644 --- a/scheme/002-even_fibonacci_numbers.scm +++ b/scheme/002-even_fibonacci_numbers.scm @@ -13,13 +13,12 @@ (define +top+ 4000000) -(define fib - (lambda (n) - (case n - ((0) 1) - ((1) 1) - (else (+ (fib (- n 1)) - (fib (- n 2))))))) +(define (fib n) + (case n + ((0) 1) + ((1) 1) + (else (+ (fib (- n 1)) + (fib (- n 2)))))) (define result (sum diff --git a/scheme/Makefile b/scheme/Makefile new file mode 100644 index 0000000..fc1b481 --- /dev/null +++ b/scheme/Makefile @@ -0,0 +1,19 @@ +CHICKEN_CC = chicken-csc -x -r5rs-syntax + +SRC = $(shell find . -type f -name '*.scm') +BIN = $(SRC:.scm=) + +all: $(BIN) + +utils: + @ + +%: %.scm + $(CHICKEN_CC) -o $@ $< + +clean: + rm -f $(BIN) + +re: clean all + +.PHONY: all clean re diff --git a/scheme/utils.scm b/scheme/utils.scm index 6ba98cd..d17f20c 100644 --- a/scheme/utils.scm +++ b/scheme/utils.scm @@ -1,22 +1,18 @@ -(define fold - (lambda (f acc xs) - (if (null? xs) - acc - (fold f (f acc (car xs)) (cdr xs))))) +(define (fold f acc xs) + (if (null? xs) + acc + (fold f (f acc (car xs)) (cdr xs)))) -(define sum - (lambda (xs) (fold + 0 xs))) +(define (sum xs) (fold + 0 xs)) -(define range - (lambda (start stop step) - (if (>= start stop) - '() - (cons start (range (+ start step) stop step))))) +(define (range 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))))) +(define (filter predicate xs) + (if (null? xs) + '() + (let* ((x (car xs)) + (filtered (filter predicate (cdr xs)))) + (if (predicate x) (cons x filtered) filtered)))) |
