{"size": 613, "ext": "scrbl", "max_stars_repo_path": "scribblings/tag.scrbl", "max_stars_repo_name": "sabjohnso/tag", "max_stars_repo_stars_event_min_datetime": null, "max_stars_repo_stars_event_max_datetime": null, "max_issues_repo_path": "scribblings/tag.scrbl", "max_issues_repo_name": "sabjohnso/tag", "max_issues_repo_issues_event_min_datetime": null, "max_issues_repo_issues_event_max_datetime": null, "max_forks_repo_path": "scribblings/tag.scrbl", "max_forks_repo_name": "sabjohnso/tag", "max_forks_repo_forks_event_min_datetime": null, "max_forks_repo_forks_event_max_datetime": null}
{"max_stars_count": null, "max_issues_count": null, "max_forks_count": null, "avg_line_length": 22.7037037037, "max_line_length": 81, "alphanum_fraction": 0.7014681892}
#lang scribble/manual
@require[@for-label["../main.rkt" racket/base]]

@title{Tag}
@author{@author+email["Samuel B. Johnson" "sabjohnso@yahoo.com"]}

@defmodule[tag]

Tags are instances of vacuous singleton types. This package provides syntax for
the definition of tags and predicates recognizing tag values.

@defform[
 #:id tag
 (tag tag-id)]{
 Create a new tag, binding two names:
 @itemize[
  @item{tag-id: the tag value.}
  @item{tag-id?: a predicate recognizing the tag value.}
 ]
}


@defproc[(tag? [v any/c]) boolean?]{
Return @racket[#t] if @racket[v] is @racket{tag?}. Otherwise, return @racket[#f].
}

