Types 有关类型实例的详细信息

Types 有关类型实例的详细信息,types,functional-programming,read-eval-print-loop,elm,Types,Functional Programming,Read Eval Print Loop,Elm,我是Elm的初学者,作为前Haskell程序员,我想知道是否有一种类似于Haskell的方法来输入解释器/REPL: :i number 所以我知道这在Elm不起作用,但有没有与Haskell等效的东西: :i Num 我想获得有关类型类及其所有实例的详细信息 此外,在Haskell文档中,有关于基本Haskell类的类型层次结构的可用信息: Elm也有类似的服务吗 提前感谢。Elm没有类型类,因此它不适合像GHCi的:i那样显示关于它们的信息。Elm的内置类型(如字符串、数字和布尔)的范

我是Elm的初学者,作为前Haskell程序员,我想知道是否有一种类似于Haskell的方法来输入解释器/REPL:

:i number
所以我知道这在Elm不起作用,但有没有与Haskell等效的东西:

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

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

Elm也有类似的服务吗


提前感谢。

Elm没有类型类,因此它不适合像GHCi的
:i
那样显示关于它们的信息。Elm的内置类型(如字符串、数字和布尔)的范围相当明显

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

  • number
    Int
    Float
    。没有小数点的数字文字是
    数字
    。除除法以外的算术运算可以对任何一种数字类型进行
  • compariable
    可以是数字、字符、字符串,也可以是递归的可比列表或元组。可比数据支持
    =
    ,以及类似数据
  • 可追加的
    可以是字符串、文本(即带有排版信息)或列表(包含任何类型)。可追加内容可以追加
    (++)
  • 没有
    Eq
    类型。试图使函数或信号相等会导致运行时错误
这一点的实际影响是:

  • 字符串(有时是列表)既可追加也可比较。0.15.1编译器中的一个错误阻止了它们的统一。(这将在0.16中固定。)
  • 如果对函数信号或函数容器调用
    Signal.dropRepeats
    ,它可能会崩溃
  • 因为Elm的字典是作为二进制搜索树实现的,所以它们的键必须是可比较的。集合元素也是如此
  • 如果其中一种类型在类型注释中多次出现,则所有引用必须统一为同一类型。如果要允许两个不同的Appendable,请调用其中一个
    appendable1
    或类似的函数
  • 似乎没有办法指定一个类型必须满足这些接口中的多个接口(除非所有数字都是可比较的)。我从来没有想到过这个,但如果有,就用混凝土类型

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

我不打算删除它,但我认为Haskell标记不适合这里。您是对的。我删除了标记。为了完整性,可能需要添加
compappend
(第四个类型类,如variabe类型)