Dmitri Pissarenko wrote:
Hello!

I have a function activityIndicator, which has an argument of class Customer
and should return a numeric value.

The module is defined as follows.

<module-definition>
data Purchase = Purchase { price, rebate :: Double }
        deriving (Show, Eq)

data Customer = Customer { id :: Int, purchases :: [Purchase] }

activityIndicator :: Customer -> Num
activityIndicator (Customer id purchases) = length purchases
</module-definition>

What is wrong in the signature above?

'Num' is not a type. It is a type class. You can think of it as a set of types; it includes, for example, Int, Float and the other usual suspects. If you want a type in the class Num the signature looks something like this:


Num a => a

Which reads like "the type a, where a is in the class Num"

However, the problem here is that length returns an Int; so your signature should be:

activityIndicator :: Customer -> Int


_______________________________________________ Haskell-Cafe mailing list [email protected] http://www.haskell.org/mailman/listinfo/haskell-cafe

Reply via email to