aboutsummaryrefslogtreecommitdiff
path: root/scheme
diff options
context:
space:
mode:
Diffstat (limited to 'scheme')
-rw-r--r--scheme/002-even_fibonacci_numbers.scm13
-rw-r--r--scheme/Makefile19
-rw-r--r--scheme/utils.scm34
3 files changed, 40 insertions, 26 deletions
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))))