在Haskell中,为什么以下代码可以通过编译:
但这个并不行:
splice :: String -> String -> String
splice a b = a ++ b
main = print (splice "hi" "ya")
但这个并不行:
splice :: (String a) => a -> a -> a
splice a b = a ++ b
main = print (splice "hi" "ya")
>> Type constructor `String' used as a class
我本以为这两个东西是一样的。有没有办法使用第二种样式,避免重复三次类型名称?