I'm happy that you posted this. It's something that I discovered on my own, and have been tentatively arguing for years[1][2][3][4].
In fact, I never really understood the visitor pattern until after I started using ML's pattern matching. The "eureka" moment came when I realized that not only do abstract classes map to sum types (logical disjunction), but interfaces correspond to product types (logical conjunction).