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

时间:2018-01-08 13:35:52

标签: typeclass purescript

我现在正在使用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中的类型类实例有名称?

1 个答案:

答案 0 :(得分:6)

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

  

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

但我认为你是对的,名字没有任何意义,可以说是由编译器生成的。