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