{"size": 1703, "ext": "scrbl", "max_stars_repo_path": "collection/set.scrbl", "max_stars_repo_name": "9999years/rebellion", "max_stars_repo_stars_event_min_datetime": "2019-05-28T21:50:27.000Z", "max_stars_repo_stars_event_max_datetime": "2022-03-17T21:21:52.000Z", "max_issues_repo_path": "collection/set.scrbl", "max_issues_repo_name": "9999years/rebellion", "max_issues_repo_issues_event_min_datetime": "2019-03-02T23:19:07.000Z", "max_issues_repo_issues_event_max_datetime": "2022-01-24T08:43:16.000Z", "max_forks_repo_path": "collection/set.scrbl", "max_forks_repo_name": "9999years/rebellion", "max_forks_repo_forks_event_min_datetime": "2019-02-01T22:21:26.000Z", "max_forks_repo_forks_event_max_datetime": "2022-01-24T04:35:35.000Z"}
{"max_stars_count": 73, "max_issues_count": 216, "max_forks_count": 20, "avg_line_length": 35.4791666667, "max_line_length": 77, "alphanum_fraction": 0.6459189665}
#lang scribble/manual

@(require (for-label racket/base
                     racket/contract/base
                     racket/set
                     rebellion/base/immutable-string
                     rebellion/collection/set
                     rebellion/streaming/reducer
                     rebellion/streaming/transducer)
          (submod rebellion/private/scribble-cross-document-tech doc)
          (submod rebellion/private/scribble-evaluator-factory doc)
          scribble/example)

@(define make-evaluator
   (make-module-sharing-evaluator-factory
    #:public (list 'rebellion/base/immutable-string
                   'rebellion/collection/set
                   'rebellion/streaming/reducer
                   'rebellion/streaming/transducer)
    #:private (list 'racket/base)))

@title{Sets}
@defmodule[rebellion/collection/set]

@defthing[empty-set empty-set?]{
 The empty immutable @tech/reference{set}.}

@defproc[(empty-set? [v any/c]) boolean?]{
 A predicate for empty immutable sets. Implies @racket[set?].}

@defproc[(nonempty-set? [v any/c]) boolean?]{
 A predicate for nonempty immutable sets. Implies @racket[set?].}

@defproc[(mutable-set? [v any/c]) boolean?]{
 A predicate for mutable sets. Equivalent to @racket[set-mutable?].}

@deftogether[[
 @defthing[into-set (reducer/c any/c set?)]
 @defthing[into-mutable-set (reducer/c any/c set-mutable?)]]]{
 @tech{Reducers} that collect elements of the reduced sequence into either an
 immutable @tech/reference{set} or a mutable set, respectively.

 @(examples
   #:eval (make-evaluator) #:once
   (transduce (list "the" "quick" "brown" "fox")
              (mapping immutable-string-length)
              #:into into-set))}
