Were templates an original feature of C++ or did they appear in a revision of the langage ?<br>Because C++ appeared in 1982 and Haskell in 1990.<br>But of course, the ML languages are older, so maybe Bjarne Stoustrup took inspiration from them. (Anyway, functional features picked up in the mainstream imperative languages usually end up being just details that doesn&#39;t save much code typing and that are powerless when compared with the original functional features).<br>

I cannot help smiling when I hear Java/C#/Python developers telling about the &quot;wondeful features&quot; of their languages ;)<br>(- We have generators! We can _yield_ values! [1]<br> - Yeah, so nice... We have simple lists... with lazy evaluation)<br>

(- We have type generics!<br> - Sigh...)<br><br>Had once a microsoft representative that came to my school to hold a lecture about C#/LINQ. Told us during fifteen minutes about their python-like &quot;yield&quot; feature. Yay.... And to say some of my teachers were in awe [2].<br>

<br>[1] Amusing fact: this was me, a few years ago.<br>[2] Well, of course, with a Java background.<br><br><br><div class="gmail_quote">2011/6/8 Alexander Solla <span dir="ltr">&lt;<a href="mailto:alex.solla@gmail.com">alex.solla@gmail.com</a>&gt;</span><br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><br><br><div class="gmail_quote"><div class="im">On Wed, Jun 8, 2011 at 2:00 AM, Malcolm Wallace <span dir="ltr">&lt;<a href="mailto:malcolm.wallace@me.com" target="_blank">malcolm.wallace@me.com</a>&gt;</span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div><br>
&gt; More seriously, the influence of Haskell over F# (and even Python) is undoubted, but do you really think Haskell influenced Java Generics? (IMHO they were more inspired from C++ templates)<br>
&gt; (That is a question, not an assertion).<br>
<br>
</div>Phil Wadler had a hand in designing both Haskell and Java Generics I believe.<br></blockquote><div><br></div></div><div>As far as I understand, Java/C# Generics and C++ templates &quot;are&quot; merely keywords around what we Haskellers call &quot;parametric polymorphism&quot;.  In other words, our type language is rich enough to express types like:</div>


<div><br></div><div>stringConcat :: [String] -&gt; String</div><div><br></div><div>and</div><div><br></div><div>concat :: Monoid a =&gt; [a] -&gt; a</div><div><br></div><div>using the &quot;same&quot; typing language, whereas the C-style languages require annotations.  (You can probably guess which I prefer.  I don&#39;t need keywords to tell me what the code describes, then the code describes it so clearly)</div>


<div><br></div><div>I can&#39;t find any literature that specifically credits functional languages for the feature, but Bjarne Stoustrup himself acknowledges that functional programmers would tend to find template metaprogramming easier than others.  He was probably aware of functional implementations (Haskell?  Miranda? ML?) when he said that.</div>


<div><br></div><div>I don&#39;t see the connection between Haskell&#39;s typeful programming and Python.  List comprehensions are set-builder-notation-like syntactic sugar for lists.  I didn&#39;t use them in Python and I don&#39;t use them in Haskell.</div>


</div>
<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>
<br></blockquote></div><br>