有关类型实例的详细信息

sie*_*fer 4 types functional-programming read-eval-print-loop elm

我是Elm的初学者,作为一名前Haskell程序员,我想知道,如果在Haskell中有类似的方式输入解释器/ REPL:

:i number
Run Code Online (Sandbox Code Playgroud)

所以我知道这在Elm中不起作用,但有些东西与Haskell相同:

:i Num
Run Code Online (Sandbox Code Playgroud)

我想获得有关类型类及其所有实例的详细信息.

此外,在Haskell文档中,有关于基本Haskell类的类型层次结构的可用信息:

https://www.haskell.org/onlinereport/basic.html

这样的东西也可以用于榆树吗?

提前致谢.

mgo*_*old 8

Elm没有类型类,因此它不适用于显示有关它们的信息,就像GHCi :i那样.Elm的内置类型的范围,如字符串,数字和bool,是相当明显的.

Elm的类型层次结构非常简单.有三个内置类型类型的变量.与将约束置于a之前的Haskell不同=>,只需直接使用这些类型变量即可.公平警告:Haskell用户通常会发现Elm的类型系统限制.(凭借Haskell 20多年的领先优势,工具生态系统也不那么先进了.)

  • A numberInt或者Float.没有小数点的数字是a number.除了除法之外的算术可以对任一数字类型进行.
  • A comparable可以是数字,字符,字符串,或递归地是可比较的列表或元组.可比的支持<,>=以及类似.
  • 一个appendable可以是一个字符串,文本(即,排版信息),或列表(包含任何类型的).附录可以附加(++).
  • 没有Eq类型.尝试将函数或信号等同起来会导致运行时错误.

这样做的实际意义是:

  • 字符串(有时是列表)都是可附加的和可比较的.0.15.1编译器中的错误会阻止它们统一.(这将在0.16中修复.)
  • 如果您调用Signal.dropRepeats函数信号或函数容器,它可能会崩溃.
  • 因为Elm的字典是作为二叉搜索树实现的,所以它们的键必须是comparable.设置元素也是如此.
  • 如果其中一种类型在类型注释中多次出现,则所有实例必须统一为同一类型.如果您想允许两个不同的可附加物,请调用其中一个appendable1或类似物.
  • 似乎没有办法指定类型必须满足多个这些接口(除了所有数字都是可比较的).我从来没有这样,但如果确实如此,只需使用混凝土类型.

如果您想在浏览器中使用Haskell,请尝试使用PureScript.