2017-08-14 26 views
2

我探索类型确定,并赋予它什么也不做,但功能:Erlang的类型确定推导出怪异类型为字符串

const_str() - > “QWE”。

那个人的类型推导为:

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

,即 “EQW”(呵呵!),其次是这个 '...' 业务。

它看起来像不断的字符串混淆typer;我知道我不应该像这样使用它们,有原子为此目的;但因为我试图围绕typer(和Erlang的类型选项),我认为这是令人惊讶和有趣的。任何人都可以解释这里发生了什么? 谢谢!

回答

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

我知道约1,当然 - 这是我没有想过的2。谢了哥们! – alexakarpov