有关类型实例的详细信息
Detailed information about type instances
我是 Elm 的初学者,作为一名前 Haskell 程序员,我想知道是否有像 Haskell 这样的方法来输入 interpreter/REPL:
:i number
所以我知道这在 Elm 中不起作用,但是是否有等同于 Haskell 的东西:
:i Num
我想获取有关类型 class 及其所有实例的详细信息。
此外,在 Haskell 文档中有关于基本 Haskell classes:
类型层次结构的信息
https://www.haskell.org/onlinereport/basic.html
Elm 也有类似的东西吗?
提前致谢。
Elm 没有类型 classes,因此它并不像 GHCi 的 :i
那样真正适用于显示有关它们的信息。 Elm 的内置类型(如字符串、数字和布尔值)的范围相当明显。
Elm 的类型层次非常简单。有 3 个内置的 type-class-like 类型变量。不像 Haskell 将约束放在 =>
之前,直接使用这些类型变量即可。公平警告:Haskell 用户通常会发现 Elm 的类型系统存在限制。 (凭借 Haskell 20 多年的领先优势,工具生态系统也不太先进。)
- A
number
是 Int
或 Float
。没有小数点的数字文字是 number
。除除法以外的算术可以对任何一种数字类型进行。
- A
comparable
可以是数字、字符、字符串,或者递归地是可比较项的列表或元组。 Comparables 支持 <
、>=
和类似的。
appendable
可以是字符串、文本(即带有排版信息)或列表(包含任何类型)。 Appendables可以附加(++)
.
- 没有
Eq
类型。尝试使函数或信号相等会导致运行时错误。
其实际意义是:
- 字符串(有时是列表)是可附加的和可比较的。 0.15.1 编译器中的一个错误阻止了它们的统一。 (这将在 0.16 中修复。)
- 如果您在函数信号或函数容器上调用
Signal.dropRepeats
,它可能会崩溃。
- 因为 Elm 的字典是作为二叉搜索树实现的,所以它们的键必须是
comparable
。集合元素也是如此。
- 如果这些类型之一在类型注释中多次出现,则所有出现必须统一为同一类型。如果你想允许两个不同的 appendables,调用其中之一
appendable1
或类似的。
- 似乎没有办法指定一个类型必须满足不止一个这些接口(除了所有数字都是可比较的)。我从来没有遇到过这种情况,但如果出现这种情况,请使用具体类型。
如果你想在浏览器中 Haskell,试试 PureScript。
我是 Elm 的初学者,作为一名前 Haskell 程序员,我想知道是否有像 Haskell 这样的方法来输入 interpreter/REPL:
:i number
所以我知道这在 Elm 中不起作用,但是是否有等同于 Haskell 的东西:
:i Num
我想获取有关类型 class 及其所有实例的详细信息。
此外,在 Haskell 文档中有关于基本 Haskell classes:
类型层次结构的信息https://www.haskell.org/onlinereport/basic.html
Elm 也有类似的东西吗?
提前致谢。
Elm 没有类型 classes,因此它并不像 GHCi 的 :i
那样真正适用于显示有关它们的信息。 Elm 的内置类型(如字符串、数字和布尔值)的范围相当明显。
Elm 的类型层次非常简单。有 3 个内置的 type-class-like 类型变量。不像 Haskell 将约束放在 =>
之前,直接使用这些类型变量即可。公平警告:Haskell 用户通常会发现 Elm 的类型系统存在限制。 (凭借 Haskell 20 多年的领先优势,工具生态系统也不太先进。)
- A
number
是Int
或Float
。没有小数点的数字文字是number
。除除法以外的算术可以对任何一种数字类型进行。 - A
comparable
可以是数字、字符、字符串,或者递归地是可比较项的列表或元组。 Comparables 支持<
、>=
和类似的。 appendable
可以是字符串、文本(即带有排版信息)或列表(包含任何类型)。 Appendables可以附加(++)
.- 没有
Eq
类型。尝试使函数或信号相等会导致运行时错误。
其实际意义是:
- 字符串(有时是列表)是可附加的和可比较的。 0.15.1 编译器中的一个错误阻止了它们的统一。 (这将在 0.16 中修复。)
- 如果您在函数信号或函数容器上调用
Signal.dropRepeats
,它可能会崩溃。 - 因为 Elm 的字典是作为二叉搜索树实现的,所以它们的键必须是
comparable
。集合元素也是如此。 - 如果这些类型之一在类型注释中多次出现,则所有出现必须统一为同一类型。如果你想允许两个不同的 appendables,调用其中之一
appendable1
或类似的。 - 似乎没有办法指定一个类型必须满足不止一个这些接口(除了所有数字都是可比较的)。我从来没有遇到过这种情况,但如果出现这种情况,请使用具体类型。
如果你想在浏览器中 Haskell,试试 PureScript。