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:
Alex Knauth 2018-08-01 13:14:05 -04:00 committed by GitHub
parent a0ca6d6489
commit 6cc3a2f960
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 30 additions and 2 deletions

View 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))))

View File

@ -125,13 +125,13 @@
[(set-implements? s 'set-empty? 'set-first 'set-rest)
(let loop ([s s])
(cond
[(stream-empty? s) empty-stream]
[(set-empty? s) empty-stream]
[else (stream-cons (set-first s)
(loop (set-rest s)))]))]
[(set-implements? s 'set-empty? 'set-first 'set-remove)
(let loop ([s s])
(cond
[(stream-empty? s) empty-stream]
[(set-empty? s) empty-stream]
[else (stream-cons (set-first s)
(loop (set-remove s (set-first s))))]))]
[(set-implements? s 'set-count 'set-first 'set-rest)