A nice overview. Two corrections. The small one is that a linked list is not at all a contrived example of structural sharing. It’s an entirely natural and common one.
The second, larger, one is that you’re using “Monad” to describe something that can be mapped over. That’s actually a “Functor”. Monads are something else.