[Haskell-beginners] What's the type of function "abs"?

Zhang Hengruo hengruo.z at gmail.com
Wed Mar 11 13:21:23 UTC 2015


I'm a newbie, knowing a little about Haskell, and hope my question isn't
very silly...
=====================================================================
My absolute value function looks like this:

abs2 :: Num a => a -> a
abs2 n = if n >= 0 then n else 0 - n

GHCi tells me that I should add Ord type class to its definition. Well,
it's true. It has used relational operators and Num isn't a subclass of Ord.
However, when I input ":t abs" in GHCi, the interpreter shows "abs :: Num a
=> a -> a". I read GHC/Num.lhs and find that abs is defined as "abs :: a ->
a" and has no concrete content. So I think the abs function is written in C
as a module to implement directly and the type of abs just follows its
class GHC.Num. Is it right? Or there are any other reasons?

Thanks,

Hengruo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/beginners/attachments/20150311/26f7586d/attachment.html>


More information about the Beginners mailing list