- lenses “focus” on elements of a product type
- prisms “split” a sum type so that optics can work over selected branches
...feels nice when you’ve been working with it for awhile.
1. The analogies made do hint at their meanings.
2. But at the same time, the names are more proper nouns than definitions. For something so abstract, it's better to give it an opaque, easy-to-remember name than to give it a "better" name that maybe oversimplifies what it is.
This is basically the "Functor" vs "Mappable" argument.
[1] Also follows the rule of "if you're going to name something after a common word, maybe give it a qualifier not usually used with that word to make it unique and easy to find". Examples: sphinx (doc, search), click (cli), pyramid (web framework), pacman (linux), language (programming).
In response to the naming in general: I’m not overly convinced about the naming thing considering that the Go Programming Language is not often confused with the game of Go, nor is the Rust Programming Language with the fungus or iron oxide.
https://www.google.com/search?source=hp&ei=mL5-X7iCJNCs0PEPo...
First result is to the popular and well-documented `optics` library which is exactly this topic. It's perfectly discoverable.
On that note, try googling "Haskell >>=" or "Haskell <$>". Good results for both. Looks like the "Haskell's symbols and esoterica isn't googlable" is a dead argument now :)
Wow, it works! I wonder when this happened.