Erlang的typer推断出奇怪的字符串类型

时间:2017-08-14 20:54:59

标签: types erlang type-systems beam

我正在探索 typer ,并为它提供了一个除了以下功能之外的功能:

  

const_str() - > “QWE”。

那个人的类型被推断为:

  

-spec const_str() - > [101 | 113 | 119,...]

,即“ eqw ”(嗯?!),接着是这个'...'业务。

看起来常量字符串会混淆 typer ;我明白我不应该像这样使用它们,为此目的有原子;但是当我试图围绕 typer (以及Erlang的类型选项)时,我认为这是令人惊讶和有趣的。谁能解释一下这里发生了什么? 谢谢!

1 个答案:

答案 0 :(得分:2)

  1. Erlang中的字符串是与字符的ASCII代码对应的整数列表(即"qwe" = [$q,$w,$e] = [113,119,101])。
  2. 类型语言无法表达列表元素的顺序(并不打算这样做)。
  3. 你得到的类型是"一个包含数字101,113和119"的非空列表,它与推理可以接近。