2016-06-29 30 views
3

根据What does comparable mean in Elm?comparable是内置类型约束,可用于将类型变量限制为那些可比较的内置类型。想到以下问题(并不容易找到):Elm中的类型约束

  • 什么是目前存在于Elm中的其他类型约束?有没有列表?
  • 有没有办法如何创建我自己的类型约束?我认为答案是否定的,因为Elm现在没有像Haskell Typeclasses这样的机制?
  • 如果上述条件为真(无自定义类型约束),那么这意味着Elm中的多态性非常有限,对吗?例如,现在看来以下情况是无法实现的:我想创建一个函数f,它接受列表(相同但不确定类型的元素),其中每个元素都可以用作某个函数的参数g(即f接受List a而且inst存在a型意味着g(inst)有道理)
+0

你见过[这些](https://github.com/elm-lang/elm-compiler/issues/38)[two](https://github.com/elm-lang/elm-compiler/问题/ 1039)关于类型类的问题? – pdexter

+0

是的,我看到了这两个。 OTOH,我看到有一个“可比”的概念,所以我不确定,这在榆树中的地位如何。 –

回答

3

除了comparable(整数,浮点数,字符,字符串,列表和元组)也有appendable(字符串,文本和列表)和number(整数和浮点数)。我还没有看到权威列表(编译器源代码之外)。

没有办法定义自己的类似类型类。

是的,这限制了您可以编写的功能。没有人确信埃文认为这个限制是一个问题。

+0

谢谢,现在已经很清楚了。另外,看看Haskell开发人员构建的所有类型的东西,使类型类足够强大(仍然有很多人咆哮!),我明白埃文不愿意这样做:) –