[Haskell-cafe] Re: General function to count list elements?

Juan Pedro Bolivar Puente magnicida at gmail.com
Sat Apr 18 12:45:12 EDT 2009


The problem is that you must note in the type signature the fact that
'a' must be a member of typeclass Eq in order to be able to use ==

count :: (Eq a) => a -> [a] -> Int
count x ys = length (filter (== x) ys)

JP

michael rice wrote:
> 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



More information about the Haskell-Cafe mailing list