Thật không may, nhiều chức năng Mẫu Haskell hoàn toàn không có tài liệu nào cả. Một chức năng như vậy là report
. Phải mất Bool
và String
và tạo ra lỗi biên dịch với chuỗi được chỉ định làm thông báo lỗi. Có ai có bất kỳ đầu mối những gì địa ngục Bool
là dành cho? Tốt nhất là tôi có thể biết, hoặc giá trị thực hiện chính xác điều tương tự ...Langage.Haskell.TH.report hoạt động như thế nào?
6
A
Trả lời
9
Nếu Bool
là True
, lỗi được báo cáo; nếu nó là False
, một "cảnh báo" được báo cáo, có nghĩa là mã mẫu sẽ tiếp tục chạy để thu thập thêm "cảnh báo".
2
Nhìn mã nguồn, report
gọi qReport
, là phương pháp của một số lớp được gọi là Quasi
. Phương pháp này thực sự có một số tài liệu chết tiệt - dù chỉ là một đoạn mã nhỏ. Tôi trích dẫn:
Báo cáo lỗi (
True
) hoặc cảnh báo (False
) ... nhưng tiếp tục; sử dụngfail
để dừng
Vì vậy, có vẻ như làm hỏng lỗ nối TH của tôi với thông báo lỗi thích hợp, tôi chỉ cần gọi fail
thay thế. Hy vọng rằng thông tin này sẽ hữu ích cho bất kỳ ai khác cố gắng tìm ra điều đó ...
Tôi có cảm giác nó sẽ giống như vậy, nhưng tôi không biết chắc lỗi nào là lỗi và cảnh báo nào đã xảy ra. Bất kể, có vẻ như việc biên dịch vẫn tiếp tục. (!) Tôi đã dự kiến sẽ báo lỗi để tạm dừng biên dịch, nhưng dường như không làm như vậy ... – MathematicalOrchid
Từ tài liệu nội bộ: 'Báo cáo lỗi (Đúng) hoặc cảnh báo (Sai) ... nhưng tiếp tục ; sử dụng 'không' để dừng'. Vì vậy, bạn phải tự chăm sóc bản thân "thất bại"; Tôi thấy đây là một quyết định thiết kế kỳ lạ. – dflemstr
Ồ, bạn đánh tôi với nó. :-) Có, thật kỳ lạ. Từ thử nghiệm của tôi, có vẻ như chỉ cần gọi 'fail' là đủ để ngăn chặn việc biên dịch, cho chuỗi như thông báo lỗi, và vị trí mối nối như là nguồn gốc của vấn đề. Đó là khá nhiều những gì tôi muốn ... – MathematicalOrchid