Reword lens/c docs and include examples

Closes #236
This commit is contained in:
Jack Firth 2015-12-03 17:02:16 -08:00
parent a4d7cade34
commit 840813724e
2 changed files with 14 additions and 8 deletions

View File

@ -6,11 +6,17 @@
@defproc[(lens/c [target/c contract?] [view/c contract?]) contract?]{
A contract constructor for lenses. The @racket[target/c] contract is used for
the second argument in @racket[(lens-view lens target)], the second argument
and the return value of @racket[(lens-set lens target view)], for example, the
any target given to or returned by the lens, while the @racket[view/c] contract
is used for any view given to or returned by the lens. For example, the
@racket[view/c] contract is used for the return value of
@racket[(lens-view lens target)] and the third argument of
@racket[(lens-set lens target view)], as well as other places where targets or
views of the lens are used as inputs or outputs.
}
@lens-examples[
(define contracted-car-lens
(invariant-assertion (lens/c pair? number?) car-lens))
(lens-view contracted-car-lens (cons 1 2))
(lens-view contracted-car-lens 'not-a-pair)
(lens-view contracted-car-lens (cons 'not-a-number 2))
(lens-set contracted-car-lens (cons 1 2) 'not-a-number)
]}

View File

@ -9,13 +9,13 @@ require scribble-example
(define-examples-form lens-examples
lens racket/list racket/vector racket/stream racket/set)
lens racket/list racket/vector racket/stream racket/set racket/contract)
(define-examples-form lens-applicable-examples
lens/applicable racket/list racket/vector racket/stream racket/set)
lens/applicable racket/list racket/vector racket/stream racket/set racket/contract)
(define-examples-form lens-unstable-examples
lens unstable/lens racket/list racket/vector racket/stream racket/set)
lens unstable/lens racket/list racket/vector racket/stream racket/set racket/contract)
(define-persistent-examples-form persistent-lens-unstable-examples
lens unstable/lens racket/list racket/vector racket/stream racket/set)
lens unstable/lens racket/list racket/vector racket/stream racket/set racket/contract)