fix typo, stream-empty? -> set-empty? (#2191)
* fix typo, stream-empty? -> set-empty? * add a regression test for the set->stream fallback
This commit is contained in:
parent
a0ca6d6489
commit
6cc3a2f960
28
pkgs/racket-test-extra/tests/racket/set-regression.rkt
Normal file
28
pkgs/racket-test-extra/tests/racket/set-regression.rkt
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
#lang racket/base
|
||||||
|
|
||||||
|
(require racket/generic racket/set racket/stream rackunit)
|
||||||
|
|
||||||
|
(define-syntax-rule (delegate method params input wrap-output)
|
||||||
|
(begin
|
||||||
|
(define/generic generic-method method)
|
||||||
|
(define (method . params) (wrap-output (generic-method . input)))))
|
||||||
|
|
||||||
|
(struct mask (s)
|
||||||
|
#:methods gen:set
|
||||||
|
[(delegate set-empty? [m] [(mask-s m)] values)
|
||||||
|
(delegate set-member? [m v] [(mask-s m) v] values)
|
||||||
|
(delegate set-add [m v] [(mask-s m) v] mask)
|
||||||
|
(delegate set-remove [m v] [(mask-s m) v] mask)
|
||||||
|
(delegate set-first [m] [(mask-s m)] values)
|
||||||
|
(delegate set-rest [m] [(mask-s m)] mask)])
|
||||||
|
|
||||||
|
;; ---
|
||||||
|
|
||||||
|
(check set=?
|
||||||
|
(list 3 5 8)
|
||||||
|
(stream->list (set->stream (mask (set 3 5 8)))))
|
||||||
|
|
||||||
|
(check set=?
|
||||||
|
(list 2 4 8)
|
||||||
|
(set->list (mask (set 2 4 8))))
|
||||||
|
|
|
@ -125,13 +125,13 @@
|
||||||
[(set-implements? s 'set-empty? 'set-first 'set-rest)
|
[(set-implements? s 'set-empty? 'set-first 'set-rest)
|
||||||
(let loop ([s s])
|
(let loop ([s s])
|
||||||
(cond
|
(cond
|
||||||
[(stream-empty? s) empty-stream]
|
[(set-empty? s) empty-stream]
|
||||||
[else (stream-cons (set-first s)
|
[else (stream-cons (set-first s)
|
||||||
(loop (set-rest s)))]))]
|
(loop (set-rest s)))]))]
|
||||||
[(set-implements? s 'set-empty? 'set-first 'set-remove)
|
[(set-implements? s 'set-empty? 'set-first 'set-remove)
|
||||||
(let loop ([s s])
|
(let loop ([s s])
|
||||||
(cond
|
(cond
|
||||||
[(stream-empty? s) empty-stream]
|
[(set-empty? s) empty-stream]
|
||||||
[else (stream-cons (set-first s)
|
[else (stream-cons (set-first s)
|
||||||
(loop (set-remove s (set-first s))))]))]
|
(loop (set-remove s (set-first s))))]))]
|
||||||
[(set-implements? s 'set-count 'set-first 'set-rest)
|
[(set-implements? s 'set-count 'set-first 'set-rest)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user