Add delete, delq, vector-copy.
authorJan Nieuwenhuizen <janneke@gnu.org>
Tue, 20 Dec 2016 10:19:40 +0000 (11:19 +0100)
committerJan Nieuwenhuizen <janneke@gnu.org>
Tue, 20 Dec 2016 10:19:40 +0000 (11:19 +0100)
* module/mes/scm.mes (filter, delete, delq, vector-copy): New functions.

module/mes/scm.mes

index c0397533d8bb8a4a1989118705df5cbbeec829ad..1fe83e882ecfc603c75ed17619832ab483037456 100644 (file)
   (if (null? lst) '()
       (append (reverse (cdr lst)) (cons (car lst) '()))))
 
+(define (filter pred lst)
+  (let loop ((lst lst))
+    (if (null? lst) '()
+        (if (pred (car lst))
+            (cons (car lst) (loop (cdr lst)))
+            (loop (cdr lst))))))
+
+(define (delete x lst)
+  (filter (lambda (e) (not (equal? e x))) lst))
+
+(define (delq x lst)
+  (filter (lambda (e) (not (eq? e x))) lst))
+
+(define (vector-copy x)
+  (list->vector (vector->list x)))
+
 (define (eof-object? x)
   (or (and (number? x) (= x -1))
       (and (char? x) (eof-object? (char->integer x)))))