<div>The concepts are fairly closely related but each entails something the other does not. Functor entails parametric polymorphism with respect to the contents of the container. And a visitor can extract a result from the traversal. </div>

<div> </div>
<div>As a result you may want to think in terms of a Traversable or Foldable functor rather than just a Functor. These will let you extract a monadic or applicative result from your container.</div>
<div> </div>
<div>Now, as for your actual question, Applicative functors are really hard to model in other languages. With C++ templates you can probably get a weak approximation with something like the encoding used here, possibly mixed with some boost magic for a usable function type:</div>

<div> </div>
<div><a href="http://www.reddit.com/r/programming/comments/8bx33/a_comparison_of_c_concepts_and_haskell_type/">http://www.reddit.com/r/programming/comments/8bx33/a_comparison_of_c_concepts_and_haskell_type/</a></div>
<div> </div>
<div>But I can&#39;t think of anyone that would try to use it in production code, and there are many common idioms that that style of translation can&#39;t account for (i.e. polymorphic recursion).</div>
<div> </div>
<div>-Edward Kmett</div>
<div> </div>
<div class="gmail_quote">On Wed, Jun 3, 2009 at 9:10 AM, Tom.Amundsen <span dir="ltr">&lt;<a href="mailto:tomamundsen@gmail.com">tomamundsen@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="PADDING-LEFT: 1ex; MARGIN: 0px 0px 0px 0.8ex; BORDER-LEFT: #ccc 1px solid"><br>So, last night, I was having this problem with my Java code where I couldn&#39;t<br>figure out for the life of me how to write a piece of code without a big if<br>
{} else if {} else if {} ... else {} structure. I was Googling &quot;Java<br>Reflection&quot; to try to determine how to &quot;cast to the most concerete subclass<br>at runtime.&quot; Then it dawned on me that what I was trying to do has already<br>
been solved by using the Visitor design pattern.<br><br>Then, after reading the Visitor design pattern page on Wiki, it said that<br>the visitor pattern is essentially an implementation of a functor. Aha! It<br>totally clicked. The Visitor pattern allows you to collect code for similar<br>
operations, while spreading apart code for similar objects. Now that really<br>sounds like a functor!<br><br>Although, now I&#39;m second guessing myself, because I can&#39;t figure out how we<br>could create some design pattern that simulates an applicative functor. I&#39;m<br>
pretty sure the Visitor pattern doesn&#39;t take you this far (but I am willing<br>to be corrected). So, is there a way to create applicative functors in<br>non-functional languages? What would that pattern look like?<br>
<br>- Tom<br><font color="#888888">--<br>View this message in context: <a href="http://www.nabble.com/Functors-and-the-Visitor-Pattern-tp23851113p23851113.html" target="_blank">http://www.nabble.com/Functors-and-the-Visitor-Pattern-tp23851113p23851113.html</a><br>
Sent from the Haskell - Haskell-Cafe mailing list archive at Nabble.com.<br><br>_______________________________________________<br>Haskell-Cafe mailing list<br><a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
<a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br></font></blockquote></div><br>