2012-03-07 30 views
6

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 BoolString 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?

Trả lời

9

Nếu BoolTrue, 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".

+0

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

+0

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

+0

Ồ, 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

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ụng fail để 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 đó ...

Các vấn đề liên quan