add contract for set-filterer-lens
This commit is contained in:
parent
db0a7ba4c9
commit
e95d387ebe
|
@ -1,9 +1,12 @@
|
|||
#lang racket/base
|
||||
|
||||
(provide set-filterer-lens)
|
||||
(require racket/contract/base)
|
||||
(provide (contract-out
|
||||
[set-filterer-lens
|
||||
(-> predicate/c (lens/c functional-set? functional-set?))]
|
||||
))
|
||||
|
||||
(require lens/base/main
|
||||
racket/contract/base
|
||||
racket/list
|
||||
racket/set
|
||||
fancy-app
|
||||
|
@ -27,6 +30,10 @@
|
|||
(for/fold ([set set]) ([elem (in-set set)] #:when (pred elem))
|
||||
(set-remove set elem)))
|
||||
|
||||
(define (functional-set? st)
|
||||
(and (generic-set? st)
|
||||
(set-implements? st 'set-add 'set-remove)))
|
||||
|
||||
(module+ test
|
||||
(check-equal? (lens-view (set-filterer-lens number?) '(1 a 2 b c 3 d e))
|
||||
'(1 2 3))
|
||||
|
|
|
@ -6,7 +6,7 @@
|
|||
|
||||
@defmodule[unstable/lens/set-filterer]
|
||||
|
||||
@defproc[(set-filterer-lens [pred (-> any/c any/c)]) lens?]{
|
||||
@defproc[(set-filterer-lens [pred (-> any/c any/c)]) (lens/c functional-set? functional-set?)]{
|
||||
Creates a lens that filters a set by the predicate @racket[pred].
|
||||
@lenses-unstable-examples[
|
||||
(lens-view (set-filterer-lens number?) (set 1 'a 2 'b 'c 3 'd 'e))
|
||||
|
|
Loading…
Reference in New Issue
Block a user