2013-07-26 5 views

risposta

14

Questa sintassi è definita nello Report e in particolare in section 3.10. [1..6] significa "enumFromTo 1 6". Non è possibile definire la sintassi in modo simile.

+13

Per enfatizzare --- '[1, 2, 3]' e '[1..3]' hanno lo stesso * valore *, ma arrivano in modi molto diversi. '[1, 2, 3]' desugars (direttamente!) A '1: 2: 3: []' mentre '[1..3]' desugars a 'enumFromTo 1 3' che poi * valuta * a' 1: 2: 3: [] '. –

+12

@tel: e per completezza, '[1,2,3]' e '[1..3]' non hanno necessariamente lo stesso valore. Dipende da che tipo è. Potrebbe essere una lista di un tipo che implementa 'Enum' in un modo strano. – newacct

+2

Uno potrebbe anche essere un errore di tipo dato che il tipo di principio di '[1,2,3]' è 'Num a => [a]' mentre il tipo di principio di '[1..3]' è '(Num a , Enum a) => [a] '. –