2013-07-26 36 views

回答

14

此語法在Report所定義,並且特別是在section 3.10[1..6]被定義爲意指enumFromTo 1 6。你不能自己定義這樣的語法。

+13

強調---''[1,2,3]'和'[1..3]'具有相同的*值*,但以非常不同的方式到達那裏。 '[1,2,3]'desugars(直接!)到'1:2:3:[]',而'[1..3]'desugars到'enumFromTo 1 3'然後*評估* 1: 2:3:[]'。 –

+12

@tel:和完整性,'[1,2,3]'和'[1..3]'不一定具有相同的值。這取決於它的類型。它可能是一個以奇怪的方式實現'Enum'的類型列表。 – newacct

+2

也可能是一個類型錯誤,因爲'[1,2,3]'的主類型是'Num a => [a]',而'[1..3]'的主類型是'(Num a ,Enum a)=> [a]'。 –