diff --git a/collects/mzlib/functior.ss b/collects/mzlib/functior.ss index 9a3863e..7d5c0e2 100644 --- a/collects/mzlib/functior.ss +++ b/collects/mzlib/functior.ss @@ -252,6 +252,11 @@ (unless (pair? x) (raise-type-error 'first "non-empty list" x)) (car x)))) + (define set-first! + (polymorphic (lambda (x v) + (unless (pair? x) + (raise-type-error 'set-first! "non-empty list" x)) + (set-car! x v)))) (define (lget name npos) (lambda (x) (let loop ([l x][pos npos]) @@ -278,6 +283,13 @@ (raise-type-error 'rest "non-empty list" x)) (cdr x)))) + (define set-rest! (polymorphic (lambda (x v) + (unless (pair? x) + (raise-type-error 'set-rest! "non-empty list" x)) + (unless (or (null? v) (pair? v)) + (raise-type-error 'set-rest! "second argument must be a list" v)) + (set-cdr! x v)))) + (define build-string (lambda (n fcn) (unless (and (integer? n) (exact? n) (>= n 0))