Trong GHCi, tôi gõHaskell Danh sách Danh sách Loại Lỗi
let xs = [1, 'a']
nó phàn nàn lỗi ngay lập tức:
<interactive>:28:11:
No instance for (Num Char) arising from the literal ‘1’
In the expression: 1
In the expression: [1, 'a']
In an equation for ‘xs’: xs = [1, 'a']
Tuy nhiên, khi tôi gõ
let xs = [1, [1, 1]]
Nó chỉ thông qua. Và nó phàn nàn khi tôi cố gắng in xs:
<interactive>:5:1:
No instance for (Num [t0]) arising from a use of ‘it’
In a stmt of an interactive GHCi command: print it
Tôi nghĩ Haskell là một ngôn ngữ kiểu tĩnh nên mọi lỗi phải được ghi trong thời gian biên dịch. Tôi tự hỏi tại sao 2 lỗi trên lại bị bắt vào thời điểm khác nhau?
Tại sao cùng một lý do không áp dụng cho trường hợp 'Num Char' tiềm năng? –
@ReidBarton Câu hỏi hay! Tôi thực sự không chắc chắn về điều đó. Tôi đoán rằng trong thời gian giải quyết trường hợp, GHC từ chối trì hoãn việc tìm kiếm bằng chứng cho các ràng buộc đơn hình; nhưng đó chỉ là một phỏng đoán. –
Bạn có thể định nghĩa một cá thể 'Num Char' dựa trên cá thể' Enum Char'. Cùng một lý do sẽ áp dụng, nhưng trường hợp chỉ không được bao gồm ở đây. –