add struct and dict lenses to main.rkt
This commit is contained in:
parent
f763204514
commit
92a90d619c
|
@ -3,19 +3,15 @@
|
||||||
@(require scribble/eval
|
@(require scribble/eval
|
||||||
"lenses-examples.rkt"
|
"lenses-examples.rkt"
|
||||||
(for-label lens
|
(for-label lens
|
||||||
lens/dict
|
|
||||||
racket/base
|
racket/base
|
||||||
racket/contract))
|
racket/contract))
|
||||||
|
|
||||||
|
|
||||||
@title{Dict lenses}
|
@title{Dict lenses}
|
||||||
|
|
||||||
@defmodule[lens/dict]
|
|
||||||
|
|
||||||
@defproc[(dict-ref-lens [key any/c]) lens?]{
|
@defproc[(dict-ref-lens [key any/c]) lens?]{
|
||||||
Returns a lens for viewing the value mapped to @racket[key] in a dict.
|
Returns a lens for viewing the value mapped to @racket[key] in a dict.
|
||||||
@lenses-examples[
|
@lenses-examples[
|
||||||
(require lens/dict)
|
|
||||||
(define dict '((a . 1) (b . 2) (c . 3)))
|
(define dict '((a . 1) (b . 2) (c . 3)))
|
||||||
(lens-view (dict-ref-lens 'a) dict)
|
(lens-view (dict-ref-lens 'a) dict)
|
||||||
(lens-set (dict-ref-lens 'a) dict 100)
|
(lens-set (dict-ref-lens 'a) dict 100)
|
||||||
|
|
|
@ -2,13 +2,19 @@
|
||||||
|
|
||||||
(require
|
(require
|
||||||
"base/main.rkt"
|
"base/main.rkt"
|
||||||
"list/main.rkt")
|
"list/main.rkt"
|
||||||
|
"struct.rkt"
|
||||||
|
"dict.rkt"
|
||||||
|
)
|
||||||
|
|
||||||
(provide
|
(provide
|
||||||
(except-out
|
(except-out
|
||||||
(all-from-out
|
(all-from-out
|
||||||
"base/main.rkt"
|
"base/main.rkt"
|
||||||
"list/main.rkt")
|
"list/main.rkt"
|
||||||
|
"struct.rkt"
|
||||||
|
"dict.rkt"
|
||||||
|
)
|
||||||
focus-lens
|
focus-lens
|
||||||
drop-lens
|
drop-lens
|
||||||
list-ref-nested-lens
|
list-ref-nested-lens
|
||||||
|
|
|
@ -5,13 +5,13 @@
|
||||||
(require racket/local
|
(require racket/local
|
||||||
syntax/parse/define
|
syntax/parse/define
|
||||||
alexis/util/struct
|
alexis/util/struct
|
||||||
"main.rkt"
|
"base/main.rkt"
|
||||||
(for-syntax racket/base
|
(for-syntax racket/base
|
||||||
syntax/parse
|
syntax/parse
|
||||||
racket/syntax
|
racket/syntax
|
||||||
))
|
))
|
||||||
(module+ test
|
(module+ test
|
||||||
(require rackunit fancy-app (only-in lens/base/main lens-transform*)))
|
(require rackunit fancy-app))
|
||||||
|
|
||||||
(define-simple-macro (struct-lens s:id fld:id)
|
(define-simple-macro (struct-lens s:id fld:id)
|
||||||
#:with s-fld (format-id #'s "~a-~a" #'s #'fld #:source #'fld)
|
#:with s-fld (format-id #'s "~a-~a" #'s #'fld #:source #'fld)
|
||||||
|
|
|
@ -3,20 +3,16 @@
|
||||||
@(require scribble/eval
|
@(require scribble/eval
|
||||||
"lenses-examples.rkt"
|
"lenses-examples.rkt"
|
||||||
(for-label lens
|
(for-label lens
|
||||||
lens/struct
|
|
||||||
racket/base
|
racket/base
|
||||||
racket/contract))
|
racket/contract))
|
||||||
|
|
||||||
|
|
||||||
@title{Struct lenses}
|
@title{Struct lenses}
|
||||||
|
|
||||||
@defmodule[lens/struct]
|
|
||||||
|
|
||||||
@defform[(struct-lens struct-id field-id)]{
|
@defform[(struct-lens struct-id field-id)]{
|
||||||
Returns a lens for viewing the @racket[field-id] field of
|
Returns a lens for viewing the @racket[field-id] field of
|
||||||
a @racket[struct-id] instance.
|
a @racket[struct-id] instance.
|
||||||
@lenses-examples[
|
@lenses-examples[
|
||||||
(require lens/struct)
|
|
||||||
(struct foo (a b c) #:transparent)
|
(struct foo (a b c) #:transparent)
|
||||||
(lens-view (struct-lens foo a) (foo 1 2 3))
|
(lens-view (struct-lens foo a) (foo 1 2 3))
|
||||||
(lens-set (struct-lens foo a) (foo 1 2 3) 100)
|
(lens-set (struct-lens foo a) (foo 1 2 3) 100)
|
||||||
|
|
Loading…
Reference in New Issue
Block a user