I know functions can be compared in Scheme Welcome to DrScheme, version 4.1 [3m]. Language: Swindle; memory limit: 128 megabytes. > (equal? equal? equal?) #t >
but apparently not in Haskell [mich...@localhost ~]$ ghci 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. Prelude> (==) (==) (==) <interactive>:1:0: No instance for (Eq (a -> a -> Bool)) arising from a use of `==' at <interactive>:1:0-13 Possible fix: add an instance declaration for (Eq (a -> a -> Bool)) In the expression: (==) (==) (==) In the definition of `it': it = (==) (==) (==) Prelude> though I'm new at Haskell and may not be posing the question properly. I would think a language with 1st-class support for functions would certainly include comparing them. To compare two functions in C, I would compare their machine addresses. 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:39 AM 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