2013-07-26 38 views

Trả lời

14

Cú pháp này được xác định trong Report và đặc biệt trong section 3.10. [1..6] được định nghĩa là enumFromTo 1 6. Bạn không thể tự định nghĩa cú pháp như thế.

+13

Để nhấn mạnh --- '[1, 2, 3]' và '[1..3]' có cùng giá trị * *, nhưng đến đó theo những cách rất khác nhau. '[1, 2, 3]' desugars (trực tiếp!) Tới '1: 2: 3: []' trong khi '[1..3]' desugars thành 'enumFromTo 1 3' mà sau đó * đánh giá * thành' 1: 2: 3: [] '. –

+12

@tel: và cho đầy đủ, '[1,2,3]' và '[1..3]' không nhất thiết phải có cùng giá trị. Nó phụ thuộc vào loại của nó. Nó có thể là một danh sách của một loại thực hiện 'Enum' một cách kỳ lạ. – newacct

+2

Một cũng có thể là lỗi kiểu như kiểu nguyên tắc của '[1,2,3]' là 'Num a => [a]' trong khi kiểu nguyên tắc của '[1..3]' là '(Num a , Enum a) => [a] '. –