add dict-ref-lens
This commit is contained in:
parent
c345505da6
commit
f763204514
16
lens/dict.rkt
Normal file
16
lens/dict.rkt
Normal file
|
@ -0,0 +1,16 @@
|
|||
#lang racket/base
|
||||
|
||||
(provide dict-ref-lens)
|
||||
|
||||
(require racket/dict fancy-app "base/main.rkt")
|
||||
(module+ test
|
||||
(require rackunit))
|
||||
|
||||
(define (dict-ref-lens key)
|
||||
(make-lens (dict-ref _ key)
|
||||
(dict-set _ key _)))
|
||||
|
||||
(module+ test
|
||||
(check-equal? (lens-transform* '((a . 1) (b . 2) (c . 3)) (dict-ref-lens 'a) (* 100 _))
|
||||
'((a . 100) (b . 2) (c . 3)))
|
||||
)
|
22
lens/dict.scrbl
Normal file
22
lens/dict.scrbl
Normal file
|
@ -0,0 +1,22 @@
|
|||
#lang scribble/manual
|
||||
|
||||
@(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)
|
||||
]}
|
|
@ -16,4 +16,5 @@ source code: @url["https://github.com/jackfirth/lens"]
|
|||
@include-section["base/main.scrbl"]
|
||||
@include-section["list/main.scrbl"]
|
||||
@include-section["struct.scrbl"]
|
||||
@include-section["dict.scrbl"]
|
||||
@include-section["applicable.scrbl"]
|
||||
|
|
Loading…
Reference in New Issue
Block a user