[Haskell-cafe] General function to count list elements?
Bulat Ziganshin
bulat.ziganshin at gmail.com
Sat Apr 18 12:41:41 EDT 2009
Hello michael,
Saturday, April 18, 2009, 8:27:45 PM, you wrote:
so you can use Scheme to derive theorem proofs. useful for exams! :)
> 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
> [michael at 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 <ekirpichov at gmail.com> wrote:
> From: Eugene Kirpichov <ekirpichov at gmail.com>
> Subject: Re: [Haskell-cafe] General function to count list elements?
> To: "michael rice" <nowgate at yahoo.com>
> Cc: haskell-cafe at 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 <nowgate at 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 <ekirpichov at gmail.com> wrote:
>>
>> From: Eugene Kirpichov <ekirpichov at gmail.com>
>> Subject: Re: [Haskell-cafe] General function to count list elements?
>> To: "michael rice" <nowgate at yahoo.com>
>> Cc: haskell-cafe at 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 <nowgate at 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
>>>
>>> =============
>>>
>>> [michael at 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 at haskell.org
>>> http://www.haskell.org/mailman/listinfo/haskell-cafe
>>>
>>>
>>
>>
>>
>> --
>> Eugene Kirpichov
>> Web IR developer, market.yandex.ru
>>
>>
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list