Err, technically, aren&#39;t functions and constructors mutually exclusive? So if something is a function, it&#39;s, by definition, not a constructor?<br><br><div class="gmail_quote">On Wed, Jul 15, 2009 at 6:25 AM, Eugene Kirpichov <span dir="ltr">&lt;<a href="mailto:ekirpichov@gmail.com">ekirpichov@gmail.com</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">Technically, the reason is not that (++) is a function, but that it is<br>
not a constructor of the [] type.<br>
<br>
And, not only is it not a constructor, but it also *can&#39;t* be one,<br>
because the main characteristic of pattern matching in Haskell is that<br>
it is (contrary to Prolog&#39;s unification) unambiguous (unambiguity of<br>
constructors is guaranteed by the semantics of Haskell&#39;s algebraic<br>
datatypes).<br>
<br>
If ++ could be pattern matched, what should have been the result of<br>
&quot;let (x++y)=[1,2,3] in (x,y)&quot;?<br>
<br>
2009/7/15 minh thu &lt;<a href="mailto:noteed@gmail.com">noteed@gmail.com</a>&gt;:<br>
&gt; 2009/7/15 Magicloud Magiclouds &lt;<a href="mailto:magicloud.magiclouds@gmail.com">magicloud.magiclouds@gmail.com</a>&gt;:<br>
<div class="im">&gt;&gt; Hi,<br>
&gt;&gt;  I do not notice this before. &quot;fun ([0, 1] ++ xs) = ..&quot; in my code<br>
&gt;&gt; could not be compiled, parse error.<br>
&gt;<br>
</div>&gt; ++ is a function; you can&#39;t pattern-match on that.<br>
&gt;<br>
&gt; Cheers,<br>
&gt; Thu<br>
&gt; _______________________________________________<br>
&gt; Haskell-Cafe mailing list<br>
&gt; <a href="mailto:Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>
&gt; <a href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>
&gt;<br>
<font color="#888888"><br>
<br>
<br>
--<br>
Eugene Kirpichov<br>
Web IR developer, <a href="http://market.yandex.ru" target="_blank">market.yandex.ru</a><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>