为什么 PureScript 中的实例有名称?
Why do instances in PureScript have names?
我现在在一个项目中使用 PureScript 并遇到了一些实例(我是新手,正在学习)。基本上我必须创建一个实例才能重载具有不同类型的函数。
public String toStr(Integer i) {
return String.valueOf(i);
}
public String toStr(Float i) {
return String.valueOf(i);
}
(我知道,这很奇怪,但只是举个例子)。据我所知,这可以使用 class 类型来编写。
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 中 classes 类型的实例有名字?
根据书上的说法PureScript by Example,是因为:
in PureScript, type class instances are named to aid the readability of the generated JavaScript.
但我认为你是对的,这个名字没有任何意义,可以说是由编译器生成的。
我现在在一个项目中使用 PureScript 并遇到了一些实例(我是新手,正在学习)。基本上我必须创建一个实例才能重载具有不同类型的函数。
public String toStr(Integer i) {
return String.valueOf(i);
}
public String toStr(Float i) {
return String.valueOf(i);
}
(我知道,这很奇怪,但只是举个例子)。据我所知,这可以使用 class 类型来编写。
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 中 classes 类型的实例有名字?
根据书上的说法PureScript by Example,是因为:
in PureScript, type class instances are named to aid the readability of the generated JavaScript.
但我认为你是对的,这个名字没有任何意义,可以说是由编译器生成的。