Two functions are equal iff they have the same domain and range and
the same outputs for the same inputs. Simple to state, but extremely
difficult to implement in a useful way, and impossible to implement in
a perfect way.
If you had a compiler or algorithm capable of determining function
equality, you could use it to prove or disprove arbitrary theorems in
mathematics.
Regards,
John A. De Goes
N-BRAIN, Inc.
The Evolution of Collaboration
http://www.n-brain.net | 877-376-2724 x 101
On Apr 18, 2009, at 9:39 AM, Eugene Kirpichov wrote:
Could you then provide an example of two functions that *are* equal,
or, even better, a definition of equality for arbitrary functions?
Since Haskell may be compiled into C, this must be a definition that
is implementable in C.
2009/4/18 michael rice <nowg...@yahoo.com>:
Though I haven't tried it out, it's trying to use my function to
count
functions.
The first argument is the identity function.
The second argument is a list of a different form of the identity
function.
Though the two identity functions, given the same input, would
produce the
same output, I doubt they would be equal.
So my guess at an answer would be zero.
Michael
--- On Sat, 4/18/09, Eugene Kirpichov <ekirpic...@gmail.com> wrote:
From: Eugene Kirpichov <ekirpic...@gmail.com>
Subject: Re: [Haskell-cafe] General function to count list elements?
To: "michael rice" <nowg...@yahoo.com>
Cc: haskell-cafe@haskell.org
Date: Saturday, April 18, 2009, 11:03 AM
What should
count (\x -> x) (replicate 10 (\y -> if 1==1 then y else undefined))
return?
2009/4/18 michael rice <nowg...@yahoo.com>:
Is there a general function to count list elements. I'm trying this
count :: a -> [a] -> Int
count x ys = length (filter (== x) ys)
with this error upon loading
=============
[mich...@localhost ~]$ ghci count
GHCi, version 6.10.1: http://www.haskell.org/ghc/ :? for help
Loading package ghc-prim ... linking ... done.
Loading package integer ... linking ... done.
Loading package base ... linking ... done.
[1 of 1] Compiling Main ( count.hs, interpreted )
count.hs:2:29:
Could not deduce (Eq a) from the context ()
arising from a use of `==' at count.hs:2:29-32
Possible fix:
add (Eq a) to the context of the type signature for `count'
In the first argument of `filter', namely `(== x)'
In the first argument of `length', namely `(filter (== x) ys)'
In the expression: length (filter (== x) ys)
Failed, modules loaded: none.
Prelude>
=============
Not sure what it's trying to tell me other than I need an (Eq a)
somewhere.
Michael
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
--
Eugene Kirpichov
Web IR developer, market.yandex.ru
--
Eugene Kirpichov
Web IR developer, market.yandex.ru
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe
_______________________________________________
Haskell-Cafe mailing list
Haskell-Cafe@haskell.org
http://www.haskell.org/mailman/listinfo/haskell-cafe