<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">&gt; To compare two functions in C, I would compare their machine addresses.<br>&gt;<br><br>Why would you need that at all?<br><br>How would *you* do it?<br><br>Michael<br><br>================<br><br>--- On <b>Sat, 4/18/09, Eugene Kirpichov <i>&lt;ekirpichov@gmail.com&gt;</i></b> wrote:<br><blockquote style="border-left: 2px solid rgb(16, 16, 255); margin-left: 5px; padding-left: 5px;"><br>From: Eugene Kirpichov &lt;ekirpichov@gmail.com&gt;<br>Subject: Re: [Haskell-cafe] General function to count list elements?<br>To: "michael rice" &lt;nowgate@yahoo.com&gt;<br>Cc: haskell-cafe@haskell.org<br>Date: Saturday, April 18, 2009, 12:39 PM<br><br><div class="plainMail">2009/4/18 michael rice &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;:<br>&gt; I know functions can be compared in Scheme<br>&gt;<br>&gt;
 Welcome to DrScheme, version 4.1 [3m].<br>&gt; Language: Swindle; memory limit: 128 megabytes.<br>&gt;&gt; (equal? equal? equal?)<br>&gt; #t<br>&gt;&gt;<br>&gt;<br><br>That's not the functions being compared, but the memory addresses of<br>the code implementing them. If your goal is comparing functions to<br>answer a question "Are these two values indistinguishable?", equal?<br>doesn't help you, because it may answer 'false' even if these two<br>values are indistinguishable from a mathematical point of view.<br><br>&gt;<br>&gt; but apparently not in Haskell<br>&gt;<br>&gt; [michael@localhost ~]$ ghci<br>&gt; GHCi, version 6.10.1: <a href="http://www.haskell.org/ghc/%C2%A0" target="_blank">http://www.haskell.org/ghc/&nbsp;</a> :? for help<br>&gt; Loading package ghc-prim ... linking ... done.<br>&gt; Loading package integer ... linking ... done.<br>&gt; Loading package base ... linking ... done.<br>&gt; Prelude&gt; (==) (==) (==)<br>&gt;<br>&gt;
 &lt;interactive&gt;:1:0:<br>&gt; &nbsp;&nbsp;&nbsp; No instance for (Eq (a -&gt; a -&gt; Bool))<br>&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arising from a use of `==' at &lt;interactive&gt;:1:0-13<br>&gt; &nbsp;&nbsp;&nbsp; Possible fix: add an instance declaration for (Eq (a -&gt; a -&gt; Bool))<br>&gt; &nbsp;&nbsp;&nbsp; In the expression: (==) (==) (==)<br>&gt; &nbsp;&nbsp;&nbsp; In the definition of `it': it = (==) (==) (==)<br>&gt; Prelude&gt;<br>&gt;<br>&gt; though I'm new at Haskell and may not be posing the question properly.<br>&gt;<br>&gt; I would think a language with 1st-class support for functions would<br>&gt; certainly include comparing them.<br>&gt;<br><br>Again, this is first-class support for memory addresses of code<br>representing functions.<br><br>&gt; To compare two functions in C, I would compare their machine addresses.<br>&gt;<br><br>Why would you need that at all?<br><br>&gt; Michael<br>&gt;<br>&gt;<br>&gt; --- On Sat, 4/18/09,
 Eugene Kirpichov &lt;<a ymailto="mailto:ekirpichov@gmail.com" href="/mc/compose?to=ekirpichov@gmail.com">ekirpichov@gmail.com</a>&gt; wrote:<br>&gt;<br>&gt; From: Eugene Kirpichov &lt;<a ymailto="mailto:ekirpichov@gmail.com" href="/mc/compose?to=ekirpichov@gmail.com">ekirpichov@gmail.com</a>&gt;<br>&gt; Subject: Re: [Haskell-cafe] General function to count list elements?<br>&gt; To: "michael rice" &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;<br>&gt; Cc: <a ymailto="mailto:haskell-cafe@haskell.org" href="/mc/compose?to=haskell-cafe@haskell.org">haskell-cafe@haskell.org</a><br>&gt; Date: Saturday, April 18, 2009, 11:39 AM<br>&gt;<br>&gt; Could you then provide an example of two functions that *are* equal,<br>&gt; or, even better, a definition of equality for arbitrary functions?<br>&gt; Since Haskell may be compiled into C, this must be a definition that<br>&gt; is implementable in
 C.<br>&gt;<br>&gt; 2009/4/18 michael rice &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;:<br>&gt;&gt; Though I haven't tried it out, it's trying to use my function to count<br>&gt;&gt; functions.<br>&gt;&gt;<br>&gt;&gt; The first argument is the identity function.<br>&gt;&gt;<br>&gt;&gt; The second argument is a list of a different form of the identity<br>&gt;&gt; function.<br>&gt;&gt;<br>&gt;&gt; Though the two identity functions, given the same input, would produce the<br>&gt;&gt; same output, I doubt they would be equal.<br>&gt;&gt;<br>&gt;&gt; So my guess at an answer would be zero.<br>&gt;&gt;<br>&gt;&gt; Michael<br>&gt;&gt;<br>&gt;&gt; --- On Sat, 4/18/09, Eugene Kirpichov &lt;<a ymailto="mailto:ekirpichov@gmail.com" href="/mc/compose?to=ekirpichov@gmail.com">ekirpichov@gmail.com</a>&gt; wrote:<br>&gt;&gt;<br>&gt;&gt; From: Eugene Kirpichov &lt;<a ymailto="mailto:ekirpichov@gmail.com"
 href="/mc/compose?to=ekirpichov@gmail.com">ekirpichov@gmail.com</a>&gt;<br>&gt;&gt; Subject: Re: [Haskell-cafe] General function to count list elements?<br>&gt;&gt; To: "michael rice" &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;<br>&gt;&gt; Cc: <a ymailto="mailto:haskell-cafe@haskell.org" href="/mc/compose?to=haskell-cafe@haskell.org">haskell-cafe@haskell.org</a><br>&gt;&gt; Date: Saturday, April 18, 2009, 11:03 AM<br>&gt;&gt;<br>&gt;&gt; What should<br>&gt;&gt;<br>&gt;&gt; count (\x -&gt; x) (replicate 10 (\y -&gt; if 1==1 then y else undefined))<br>&gt;&gt;<br>&gt;&gt; return?<br>&gt;&gt;<br>&gt;&gt; 2009/4/18 michael rice &lt;<a ymailto="mailto:nowgate@yahoo.com" href="/mc/compose?to=nowgate@yahoo.com">nowgate@yahoo.com</a>&gt;:<br>&gt;&gt;&gt; Is there a general function to count list elements. I'm trying this<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; count :: a -&gt; [a] -&gt; Int<br>&gt;&gt;&gt;
 count x ys = length (filter (== x) ys)<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; with this error upon loading<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; =============<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; [michael@localhost ~]$ ghci count<br>&gt;&gt;&gt; GHCi, version 6.10.1: <a href="http://www.haskell.org/ghc/%C2%A0" target="_blank">http://www.haskell.org/ghc/&nbsp;</a> :? for help<br>&gt;&gt;&gt; Loading package ghc-prim ... linking ... done.<br>&gt;&gt;&gt; Loading package integer ... linking ... done.<br>&gt;&gt;&gt; Loading package base ... linking ... done.<br>&gt;&gt;&gt; [1 of 1] Compiling Main&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ( count.hs, interpreted )<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; count.hs:2:29:<br>&gt;&gt;&gt; &nbsp;&nbsp;&nbsp; Could not deduce (Eq a) from the context ()<br>&gt;&gt;&gt; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; arising from a use of `==' at count.hs:2:29-32<br>&gt;&gt;&gt; &nbsp;&nbsp;&nbsp; Possible fix:<br>&gt;&gt;&gt;
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; add (Eq a) to the context of the type signature for `count'<br>&gt;&gt;&gt; &nbsp;&nbsp;&nbsp; In the first argument of `filter', namely `(== x)'<br>&gt;&gt;&gt; &nbsp;&nbsp;&nbsp; In the first argument of `length', namely `(filter (== x) ys)'<br>&gt;&gt;&gt; &nbsp;&nbsp;&nbsp; In the expression: length (filter (== x) ys)<br>&gt;&gt;&gt; Failed, modules loaded: none.<br>&gt;&gt;&gt; Prelude&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; =============<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Not sure what it's trying to tell me other than I need an (Eq a)<br>&gt;&gt;&gt; somewhere.<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; Michael<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;&gt; _______________________________________________<br>&gt;&gt;&gt; Haskell-Cafe mailing list<br>&gt;&gt;&gt; <a ymailto="mailto:Haskell-Cafe@haskell.org" href="/mc/compose?to=Haskell-Cafe@haskell.org">Haskell-Cafe@haskell.org</a><br>&gt;&gt;&gt; <a
 href="http://www.haskell.org/mailman/listinfo/haskell-cafe" target="_blank">http://www.haskell.org/mailman/listinfo/haskell-cafe</a><br>&gt;&gt;&gt;<br>&gt;&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt;<br>&gt;&gt; --<br>&gt;&gt; Eugene Kirpichov<br>&gt;&gt; Web IR developer, market.yandex.ru<br>&gt;&gt;<br>&gt;&gt;<br>&gt;<br>&gt;<br>&gt;<br>&gt; --<br>&gt; Eugene Kirpichov<br>&gt; Web IR developer, market.yandex.ru<br>&gt;<br>&gt;<br><br><br><br>-- <br>Eugene Kirpichov<br>Web IR developer, market.yandex.ru<br></div></blockquote></td></tr></table><br>