我正在探索typer,并给了它一个函数,除了:
const_str(( -> "qwe"。
那家伙的类型被推导出为:
-规格 const_str(( -> [101 | 113 | 119,...]
,即">eqw"(嗯?!(,后跟这个"..."商。
看起来常量字符串令人困惑的打字器;我知道我不应该这样使用它们,有原子用于此目的;但是当我试图围绕typer(和 Erlang 的类型选项(进行思考时,我认为这是令人惊讶和有趣的。谁能解释一下这里发生了什么? 谢谢!
- Erlang 中的字符串是对应于字符的 ASCII 代码的整数列表(即
"qwe" = [$q,$w,$e] = [113,119,101]
(。 - 类型语言不能表示列表元素的顺序(并且不打算这样做(。
- 你得到的类型是"包含数字 101、113 和 119 的非空列表",这与推理所能得到的一样接近。