Return specific type within Haskell

前端 未结 3 2046
我寻月下人不归
我寻月下人不归 2020-12-01 14:36

I have a pretty general question about Haskell\'s type system. I\'m trying to become familiar with it, and I have the following function:

getN :: Num a =>         


        
3条回答
  •  感动是毒
    2020-12-01 15:12

    A function with signature Num a => a is expected to work for any type in the class Num. The implementation 5.0 :: Double just works for one type, not for all types of the class, so the compiler complains.

    An example of a generic function would be:

    square :: (Num a) => a -> a
    square x = x * x
    

    This works for any type that is a Num. It works for doubles, integers and whatever other numbers you want to use. Because of that it can have a generic type signature that just requires the parameter to be in class Num. (Type class Num is necessary because the function uses multiplication with *, which is defined there)

提交回复
热议问题