defaultingという仕組みによるものです。
http://www.sampou.org/haskell/report-revised-j/decls.html#sect4.3.4

上のレポートにあるように、add :: Num a => a -> a -> aと型シグニチャを書くか
defaultingを止めるためにモジュールの先頭で

{-# LANGUAGE NoMonomorphismRestriction #-}
default ()

としてやると意図通りの型になります。