在Elm中键入约束

时间:2016-06-29 12:08:13

标签: types polymorphism typeclass elm

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

  • 目前Elm中存在的其他类型约束是什么?某个地方有名单吗?
  • 有没有办法创建自己的类型约束?我认为答案是否定的,因为榆树目前没有任何机制,如Haskell Typeclasses?
  • 如果上述情况属实(没有自定义类型约束),那确实意味着Elm中的多态性非常有限,不是吗?例如,似乎现在无法实现以下目标:我想创建一个函数f,它接受​​元素列表(具有相同但不确定的类型),每个元素都可以用作某个函数的参数g(即f接受List a,而且inst类型为a,表示g(inst)有意义

1 个答案:

答案 0 :(得分:4)

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

无法定义自己的类似类型类。

是的,这限制了您可以编写的功能。没有人说服Evan这个限制是个问题。