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

亚历克斯卡波夫

我正在探索typer,并为其提供了一个除了以下功能外不执行任何操作的函数:

const_str()->“ qwe”。

该家伙的类型推导为:

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

,即“ eqw ”(是吗?!),然后是“ ...”业务。

看起来常量字符串使typer感到困惑我知道我不应该这样使用它们,因为有原子用于此目的。但是,当我试图围绕typer(以及Erlang的type选项)工作时,我认为这令人惊讶且有趣。谁能解释这是怎么回事?谢谢!

阿罗尼斯斯塔夫
  1. Erlang中的字符串是对应于字符ASCII码(即"qwe" = [$q,$w,$e] = [113,119,101]的整数列表
  2. 类型语言不能表达列表元素的顺序(并且不打算这样做)。
  3. 您得到的类型是“包含数字101、113和119的非空列表”的类型,它与推论可以得到的非常接近。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章