为什么PureScript中的实例有名称?

Sri*_*ati 1 typeclass purescript

我现在正在使用PureScript进行项目并遇到实例(我是新手,我正在学习).基本上我必须创建一个实例,以便使具有不同类型的函数重载.

public String toStr(Integer i) {
    return String.valueOf(i);
}

public String toStr(Float i) {
    return String.valueOf(i);
}
Run Code Online (Sandbox Code Playgroud)

(我知道,这很奇怪,只是举个例子).据我所知,这可以使用类型类编写.

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
Run Code Online (Sandbox Code Playgroud)

这是我们如何做到.据我所知,没有必要为实例命名,因为编译器会自动识别它.我甚至出于好奇来测试它,它适用于我给它的任何名字.

那么为什么PureScript中的类型类实例有名称呢?

小智 6

根据PureScript by Example这本书,它是因为:

在PureScript中,类型类实例的命名是为了帮助生成JavaScript的可读性.

但我认为你是正确的,名称没有任何意义,可以说是由编译器生成的.