{"size": 641, "ext": "scrbl", "max_stars_repo_path": "lens-doc/lens/private/struct/struct.scrbl", "max_stars_repo_name": "AlexKnauth/lens", "max_stars_repo_stars_event_min_datetime": "2015-07-08T12:56:46.000Z", "max_stars_repo_stars_event_max_datetime": "2022-03-17T21:21:54.000Z", "max_issues_repo_path": "lens-doc/lens/private/struct/struct.scrbl", "max_issues_repo_name": "AlexKnauth/lens", "max_issues_repo_issues_event_min_datetime": "2015-07-07T01:47:59.000Z", "max_issues_repo_issues_event_max_datetime": "2019-09-10T18:35:17.000Z", "max_forks_repo_path": "lens-doc/lens/private/struct/struct.scrbl", "max_forks_repo_name": "AlexKnauth/lens", "max_forks_repo_forks_event_min_datetime": "2015-07-07T05:01:29.000Z", "max_forks_repo_forks_event_max_datetime": "2019-07-16T00:37:04.000Z"}
{"max_stars_count": 66, "max_issues_count": 199, "max_forks_count": 11, "avg_line_length": 29.1363636364, "max_line_length": 75, "alphanum_fraction": 0.6583463339}
#lang scribble/manual

@(require lens/private/doc-util/main)


@defform[(define-struct-lenses struct-id)]{
  Given a @racket[struct-id], defines a lens for each of its fields.
  @lens-examples[
    (struct foo (a b c) #:transparent)
    (define-struct-lenses foo)
    (lens-view foo-a-lens (foo 1 2 3))
    (lens-set foo-a-lens (foo 1 2 3) 100)
]}

@defform[(struct/lens struct-id (field-spec ...) struct-option ...)]{
  Equivalent to @racket[struct] and @racket[define-struct-lenses] combined.
  @lens-examples[
    (struct/lens foo (a b c) #:transparent)
    (lens-view foo-a-lens (foo 1 2 3))
    (lens-set foo-a-lens (foo 1 2 3) 100)
]}
