Tôi có loại dữ liệu chứa IORef làm thành phần quan trọng. Điều này có nghĩa là không có cách nào để làm cho nó trở thành thành viên của lớp loại show
. Điều này không quá tệ vì tôi có chức năng print
trong đơn IO cho loại này. Nhưng nó gây phiền nhiễu trong GHCi ở chỗ mỗi khi tôi trả lại một trong những điều này, kết quả là tôi nhận được một lỗi nói rằng nó không thể được hiển thị.Hiển thị cho các loại IO
Có cách nào để nhận GHCi, hoạt động trong trình đơn IO hay không, để sử dụng tác vụ IO để hiển thị kết quả? Nếu không, sẽ có bất kỳ hậu quả tiêu cực nào khi viết show a = unsafePerformIO $ print a
?
Theo như tôi biết, không có cách nào để nói ghci để sử dụng một hàm khác với 'show' để hiển thị kết quả. Tuy nhiên, bạn có thể xác định một thể hiện chương trình cho kiểu dữ liệu của bạn chỉ đơn giản là hiển thị "" hoặc tương tự cho ioref. Đó có thể là hơi sạch hơn, nếu ít thuận tiện hơn là sử dụng 'unsafePerformIO'. –
sclv