我现在正在使用PureScript进行项目并遇到实例(我是新手,我正在学习)。基本上我必须创建一个实例,以便重载具有不同类型的函数。
public String toStr(Integer i) {
return String.valueOf(i);
}
public String toStr(Float i) {
return String.valueOf(i);
}
(我知道,这很奇怪,只是举个例子)。据我所知,这可以使用类型类编写。
foreign import unsafeToStr :: forall a. a -> String
class ToStr a where
toStr :: a -> String
instance intToStr :: ToStr Int where
toStr a = unsafeToStr a
instance numToStr :: ToStr Number where
toStr a = unsafeToStr a
这就是我们的方式。据我所知,没有必要为实例命名,因为编译器会自动识别它。我甚至出于好奇来测试它,它适用于我给它的任何名字。
那么为什么PureScript中的类型类实例有名称?
答案 0 :(得分:6)
根据书PureScript by Example,这是因为:
在PureScript中,类型类实例的命名是为了帮助生成JavaScript的可读性。
但我认为你是对的,名字没有任何意义,可以说是由编译器生成的。