我正在阅读“Real World Haskell”(好书),我对编译器如何选择重载函数有些困惑。
如果我有一个类型类
type JSONError = String
class JSON a where
toJValue :: a -> JValue
fromJValue :: JValue -> Either JSONError a
和两个这样的例子
instance JSON Bool where
toJValue = JBool
fromJValue (JBool b) = Right b
fromJValue _ = Left "not a JSON boolean"
和
instance JSON String where
toJValue = JString
fromJValue (JString s) = Right s
fromJValue _ = Left "not a JSON string"
例如,给定一个整数,编译器如何在两个“fromJValue”函数之间进行选择?