aboutsummaryrefslogtreecommitdiffstats
path: root/csc/sort.csc
diff options
context:
space:
mode:
authorRose Hogenson <rhogenson@posteo.net>2022-08-01 19:35:19 -0700
committerRose Hogenson <rhogenson@posteo.net>2022-08-01 19:35:19 -0700
commitacc561366f3fe6ec0377103f52ef0f7e923711c9 (patch)
treed7a19cfbad78a69ebea71b27302e708c0655863d /csc/sort.csc
parent99ce19a8053a93457885f32ec54c1c5b7c1961c1 (diff)
downloadchromatopelma-acc561366f3fe6ec0377103f52ef0f7e923711c9.tar.zst
Modify the project structure.
Now the lib directory contains what will eventually end up on the user's /usr/lib/csc. When I write make install, it will copy all of the .csc files from lib into the destination lib directory. This means I can start working on the standard library in lib/scheme.
Diffstat (limited to 'csc/sort.csc')
-rw-r--r--csc/sort.csc28
1 files changed, 0 insertions, 28 deletions
diff --git a/csc/sort.csc b/csc/sort.csc
deleted file mode 100644
index 6be1e16..0000000
--- a/csc/sort.csc
+++ /dev/null
@@ -1,28 +0,0 @@
-(define-library (csc sort)
- (export sort)
- (import (scheme base)
- (only (csc list)
- revappend
- split-at))
- (begin
-
-
- (define (sort-len cmp xs len)
- (if (<= len 1)
- xs
- (let ((n/2 (truncate-quotient len 2)))
- (let-values (((half-a half-b) (split-at n/2 xs)))
- (let ((sorted-half-a (sort-len cmp half-a n/2))
- (sorted-half-b (sort-len cmp half-b (- len n/2))))
- (let loop ((a sorted-half-a)
- (b sorted-half-b)
- (acc '()))
- (cond ((null? a) (revappend acc b))
- ((null? b) (revappend acc a))
- ((cmp (car b) (car a))
- (loop a (cdr b) (cons (car b) acc)))
- (else (loop (cdr a) b (cons (car a) acc))))))))))
-
-
- (define (sort cmp xs)
- (sort-len cmp xs (length xs)))))