2017-08-14 75 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