From: Jan Nieuwenhuizen Date: Tue, 20 Dec 2016 10:19:40 +0000 (+0100) Subject: Add delete, delq, vector-copy. X-Git-Url: https://jxself.org/git/?p=mes.git;a=commitdiff_plain;h=c07f3e18ca963d6796e0edeac6699156a9835b29 Add delete, delq, vector-copy. * module/mes/scm.mes (filter, delete, delq, vector-copy): New functions. --- diff --git a/module/mes/scm.mes b/module/mes/scm.mes index c0397533..1fe83e88 100644 --- a/module/mes/scm.mes +++ b/module/mes/scm.mes @@ -229,6 +229,22 @@ (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)))))