I wrote a haskell script to find the odd numbers in a list and show them on the screen, but I get an error when it comes to displaying the results.
impares = impares(x:xs) |(mod(x 2)==0) = impares xs |otherwise = x:(impares xs)
The error is as follows:
no instance for (show (a10 -> a0)) arising from a use of 'print'
Apparently there is nothing wrong with my code, but I can not execute this program! Can someone give a light?
The error is in the way you use the
mod operator. Change the definition of your function to
impares  =  impares (x:xs) | x 'mod' 2 == 0 = impares xs | otherwise = x:(impares xs)
Or if you want to use the prefix notation you can write like this:
impares  =  impares (x:xs) | mod x 2 == 0 = impares xs | otherwise = x:(impares xs)
This function could still be defined using only functions of the Prelude module. An alternative would be:
impares = filter odd