[Haskell-beginners] Type error in function binding

Nathan Hüsken nathan.huesken at posteo.de
Mon Apr 2 17:04:48 CEST 2012


I think you are  just missing parentheses:
mycounter st =
if st == [] then 0
else if head st == 'a' then 1 + mycounter (tail st) else mycounter (tail st)

On 04/02/2012 04:50 PM, bahadýr altan wrote:
> Hi.
> I'm trying to write a code which counts the number of  'a's  in a string.
> it looks like this :
> 
> mycounter st =
> if st == [] then 0
> else if head st == 'a' then 1 + mycounter tail st else mycounter tail st
> 
> but it gives this error : 
> ERROR "deneme.hs":19 - Type error in function binding
> *** Term           :mycounter
> *** Type           : [Char] -> b
> *** Does not match : ([a] -> [a]) -> [Char] -> b
> *** Because        : unification would give infinite type
> 
> I have no idea about what I'm doing wrong. Can you help me with this please?
> 
> 
> _______________________________________________
> Beginners mailing list
> Beginners at haskell.org
> http://www.haskell.org/mailman/listinfo/beginners



More information about the Beginners mailing list