Add practical applications section to readme
This commit is contained in:
parent
70cf39c73e
commit
a5c35e0d0a
16
README.md
16
README.md
|
@ -54,6 +54,22 @@ Lenses can also be extended to operate on some new data structure:
|
||||||
|
|
||||||
See [the documentation](http://pkg-build.racket-lang.org/doc/lens/index.html) for a full API reference
|
See [the documentation](http://pkg-build.racket-lang.org/doc/lens/index.html) for a full API reference
|
||||||
|
|
||||||
|
#### So when would I want to use lenses?
|
||||||
|
|
||||||
|
Lenses are most effective when you're dealing with the "giant ball of state" problem. When you
|
||||||
|
have a large amount of state you need to pass around between code written in a functional
|
||||||
|
style, it's difficult to update and manage it due to the lack of mutation "magically" updating
|
||||||
|
your entire object graph when a function changes a small part of it. Lenses allow code to
|
||||||
|
break down and manipulate portions of this state, simplifying interactions and updates.
|
||||||
|
|
||||||
|
In particular, consider using lenses if you find yourself doing any of the following:
|
||||||
|
|
||||||
|
- Using a giant complex piece of state that most pieces of code only care about a small part of
|
||||||
|
- Writing `struct-copy` a lot
|
||||||
|
- Converting some hairy data structure into another one, manipulating it, then turning it back
|
||||||
|
- Wishing you could treat data X as if it were a Y, i.e. "I wish this struct was a list so I could `map` over it easily"
|
||||||
|
- Creating structs that have nested struct instances inside them.
|
||||||
|
|
||||||
#### Contributions
|
#### Contributions
|
||||||
|
|
||||||
This project uses Github issues organized by a [Waffle board](https://waffle.io/jackfirth/lens) to track what's being worked on. Check the board to see if there's any features, bugs, etc. that interest you, or create a new Github issue to inquire about something you'd like to see changed.
|
This project uses Github issues organized by a [Waffle board](https://waffle.io/jackfirth/lens) to track what's being worked on. Check the board to see if there's any features, bugs, etc. that interest you, or create a new Github issue to inquire about something you'd like to see changed.
|
||||||
|
|
Loading…
Reference in New Issue
Block a user