A less-general but arguably more useful connection I've seen drawn is that the Visitor pattern is basically exchangeable with union types + pattern-matching (for languages that have these features); in the same way that objects can be exchanged with closures and iteration can be exchanged with recursion.
Which one of the two is "better" probably comes down to personal preference and/or the language being used, but it's good to know that you have the option.
Which one of the two is "better" probably comes down to personal preference and/or the language being used, but it's good to know that you have the option.