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



我正在探索typer,并给了它一个函数,除了:

const_str(( -> "qwe"。

那家伙的类型被推导出为:

-规格 const_str(( -> [101 | 113 | 119,...]

,即">eqw"(嗯?!(,后跟这个"..."商。

看起来常量字符串令人困惑的打字器;我知道我不应该这样使用它们,有原子用于此目的;但是当我试图围绕typer(和 Erlang 的类型选项(进行思考时,我认为这是令人惊讶和有趣的。谁能解释一下这里发生了什么? 谢谢!

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

相关内容

  • 没有找到相关文章

最新更新