我正在慢慢学习Scheme并通过阅读在线教程Write Yourself a Scheme in 48 Hours来修改Haskell。我刚刚得到了this部分,它向我们介绍了Scheme中的一些比较运算符。为什么字符串和数字有单独的比较函数/运算符?
("=", numBoolBinop (==)),
("<", numBoolBinop (<)),
(">", numBoolBinop (>)),
("/=", numBoolBinop (/=)),
(">=", numBoolBinop (>=)),
("<=", numBoolBinop (<=)),
("&&", boolBoolBinop (&&)),
("||", boolBoolBinop (||)),
("string=?", strBoolBinop (==)),
("string<?", strBoolBinop (<)),
("string>?", strBoolBinop (>)),
("string<=?", strBoolBinop (<=)),
("string>=?", strBoolBinop (>=)),
我有几个新手问题。 1.为什么有不同类型的单独比较运算符,而不是一个通用运算符或一个有许多超载的运算符? 2.有可能有一个适用于所有类型的“通用”相等运算符,它将如何实现?如果不是所有类型,那么至少对于字符串和数字?