From 30a93091b08fe4ae13c976dbbb50b5f0e68ca47a Mon Sep 17 00:00:00 2001 From: David Van Horn Date: Thu, 27 May 2010 11:56:00 -0400 Subject: [PATCH 1/2] Revert "Added remf to unstable/list." It was misplaced in unstable. This reverts commit c9d0bd10a1a617931b420471bb300253f84ae58a. Signed-off-by: David Van Horn --- collects/tests/unstable/list.rkt | 9 --------- collects/unstable/list.rkt | 10 ---------- collects/unstable/scribblings/list.scrbl | 15 --------------- 3 files changed, 0 insertions(+), 34 deletions(-) delete mode 100644 collects/tests/unstable/list.rkt diff --git a/collects/tests/unstable/list.rkt b/collects/tests/unstable/list.rkt deleted file mode 100644 index fedd410..0000000 --- a/collects/tests/unstable/list.rkt +++ /dev/null @@ -1,9 +0,0 @@ -#lang scheme -(require unstable/list) -(require tests/eli-tester) -(test - (remf positive? '()) => '() - (remf positive? '(1 -2 3 4 -5)) => '(-2 3 4 -5) - (remf even? '(1 -2 3 4 -5)) => '(1 3 4 -5) - (remf (λ (x) #f) '(1 -2 3 4 -5)) => '(1 -2 3 4 -5)) - diff --git a/collects/unstable/list.rkt b/collects/unstable/list.rkt index f8b964d..ab35a6f 100644 --- a/collects/unstable/list.rkt +++ b/collects/unstable/list.rkt @@ -112,13 +112,3 @@ (provide map/values) -;; dvanhorn added: - -(define (remf f ls) - (cond [(null? ls) '()] - [(f (car ls)) (cdr ls)] - [else - (cons (car ls) - (remf f (cdr ls)))])) - -(provide/contract [remf (-> procedure? list? list?)]) diff --git a/collects/unstable/scribblings/list.scrbl b/collects/unstable/scribblings/list.scrbl index 3bc0a26..76509f6 100644 --- a/collects/unstable/scribblings/list.scrbl +++ b/collects/unstable/scribblings/list.scrbl @@ -103,18 +103,3 @@ Produces lists of the respective values of @racket[f] applied to the elements in } -@addition{David Van Horn} - -@defproc[(remf [pred procedure?] - [lst list?]) - list?]{ -Returns a list that is like @racket[lst], omitting the first element of @racket[lst] -for which @racket[pred] produces a true value. - -@defexamples[ -#:eval the-eval -(remf negative? '(1 -2 3 4 -5)) -] - -} - -- 1.7.1 From 8848e3adc9ef85723df3906b511757e826a2a468 Mon Sep 17 00:00:00 2001 From: David Van Horn Date: Thu, 27 May 2010 14:14:20 -0400 Subject: [PATCH 2/2] Added remf to racket/list. Added documentation and tests. Signed-off-by: David Van Horn --- collects/racket/private/list.rkt | 7 +++++++ collects/scribblings/reference/pairs.scrbl | 10 ++++++++++ collects/tests/racket/list.rktl | 7 +++++++ 3 files changed, 24 insertions(+), 0 deletions(-) diff --git a/collects/racket/private/list.rkt b/collects/racket/private/list.rkt index a943d07..89deecd 100644 --- a/collects/racket/private/list.rkt +++ b/collects/racket/private/list.rkt @@ -4,6 +4,7 @@ (provide foldl foldr + remf remv remq remove @@ -62,6 +63,12 @@ (define (remv item list) (do-remove 'remv item list eqv?)) + (define (remf pred list) + (unless (and (procedure? pred) + (procedure-arity-includes? pred 1)) + (raise-type-error 'remove "procedure (arity 2)" equal?)) + (do-remove 'remf '_ list (lambda (_ y) (pred y)))) + (define (do-remove* who l r equal?) (unless (list? l) (raise-type-error who "list" l)) diff --git a/collects/scribblings/reference/pairs.scrbl b/collects/scribblings/reference/pairs.scrbl index b6234dd..14283c9 100644 --- a/collects/scribblings/reference/pairs.scrbl +++ b/collects/scribblings/reference/pairs.scrbl @@ -443,6 +443,16 @@ Returns @scheme[(remove v lst eqv?)]. ]} +@defproc[(remf [pred procedure?] + [lst list?]) + list?]{ +Returns a list that is like @scheme[lst], omitting the first element +of @scheme[lst] for which @scheme[pred] produces a true value. +@mz-examples[ +(remf negative? (list 1 -2 3 4 -5)) +]} + + @defproc[(remove* [v-lst list?] [lst list?] [proc procedure? equal?]) list?]{ diff --git a/collects/tests/racket/list.rktl b/collects/tests/racket/list.rktl index 23d21a6..35209a4 100644 --- a/collects/tests/racket/list.rktl +++ b/collects/tests/racket/list.rktl @@ -38,6 +38,13 @@ (err/rt-test (let/ec k (foldr k 0 '(1 2) '(1 2 3)))) (err/rt-test (let/ec k (foldr k 0 '(1 2) '(1 2) '(1 2 3)))) +(test '() remf positive? '()) +(test '(-2 3 4 -5) remf add1 '(1 -2 3 4 -5)) +(test '(-2 3 4 -5) remf positive? '(1 -2 3 4 -5)) +(test '(1 3 4 -5) remf even? '(1 -2 3 4 -5)) +(test '(1 -2 3 4 -5) remf (lambda (x) #f) '(1 -2 3 4 -5)) +(err/rt-test (remf cons '(1 2 3))) + (test '(0 1 2) memf add1 '(0 1 2)) (test '(2 (c 17)) memf number? '((a 1) (0 x) (1 w) 2 (c 17))) (test '("ok" (2 .7) c) memf string? '((a 0) (0 a) (1 w) "ok" (2 .7) c)) -- 1.7.1