1 ;;;; File: "utilities.scm", Time-stamp: <2006-05-08 16:04:37 feeley>
3 ;;;; Copyright (C) 2004-2009 by Marc Feeley and Vincent St-Amour
4 ;;;; All Rights Reserved.
8 (cond ((null? lst) '())
9 ((keep? (car lst)) (cons (car lst) (keep keep? (cdr lst))))
10 (else (keep keep? (cdr lst))))))
15 (cons (car lst) (take (- n 1) (cdr lst)))
21 (drop (- n 1) (cdr lst))
27 (cons x (repeat (- n 1) x))
32 (let loop ((lst lst) (i 0))
33 (cond ((not (pair? lst)) #f)
35 (else (loop (cdr lst) (+ i 1)))))))
40 (and (pred? (car lst))
41 (every pred? (cdr lst))))))
44 (define (sort-list l <?)
52 (let ((e1 (car l1)) (e2 (car l2)))
54 (cons e1 (merge (cdr l1) l2))
55 (cons e2 (merge l1 (cdr l2))))))))
58 (if (or (null? l) (null? (cdr l)))
60 (cons (car l) (split (cddr l)))))
62 (if (or (null? l) (null? (cdr l)))
64 (let* ((l1 (mergesort (split l)))
65 (l2 (mergesort (split (cdr l)))))