9 comments

[ 3.6 ms ] story [ 25.7 ms ] thread
(comment deleted)
This has nothing to do with physical optics if I understood it right? The blog post does use concepts such as lens and prism so I'm a bit confused.
This is a great way to present the concepts. Something like this would have been useful some years back when I was trying to use the Haskell library for lens.
It is a fantastic explanation of the concept on its own, as a mathematical object, but I still struggle to understand its value as a practical primitive in programming.
Authenticity nitpick: during this period where Mondrian produced geometrical works, he was emerging from theosophy as a primary influence towards universal truths. A key part of this was never using green. It's my pet peeve when people cite Mondrian based on geometry and then use green.

This is why I don't get invited to many places.

Recently I went down the rabbit hole of recursive tree maps. Walk a file system directory and assign a weight (size) to each directory recursively. Then present a tree map of each level. Click on "Users" then "fred", then "clones" for example.

Looking at this and seeing "lens" and "prisms" is at once both familiar and extremely odd. These Mondrian shapes are just like my recursive tree maps. Familiar. But the concept of lens and prism is not at all how I thought of them as I was repeatedly generating them.

It was interesting to look at what I was doing from a more formal perspective. Thanks! Yet at the same time I wish I could understand a practical use for this. How would it make things any better in my visual representation to use these concepts?

Personally, I find the whole idea of presenting a visual representation of masses of data interesting. There was a challenge a while back about how to represent the entire catalog of ISBN for example:

https://news.ycombinator.com/item?id=43168838

Maybe it’s too early in the morning but - I don’t get it. Is the point of this artistic? Just for fun? Or is this useful somehow? What does visually representing types and values as ‘optics’ that can be sliced vertically and horizontally ‘do’ for us?
Optics are well-known in the real of functional programming for being hard to understand and manage. This is mostly due to complexities in implementation details. Try to take a look at https://hackage.haskell.org/package/lens to see what I mean.

The point of the article was to try to explain them in simple terms through a graphical notation, so that they become more accessible and manageable by more people.