Racket docs are superb. The explanation of lenses is really accessible: https://docs.racket-lang.org/lens/lens-intro.html (some great examples and rationale)