Các GHC documentation mô tả các UNPACK
pragma như sau:
Các UNPACK
chỉ để trình biên dịch rằng nó nên giải nén các nội dung của một lĩnh vực xây dựng thành các nhà xây dựng chính nó, loại bỏ một mức gián tiếp.
sẽ datatype Làm thế nào T
được giải nén?
data T = T (P Int Int)
tương ứng với
Do đó, data T = T {-# UNPACK #-} !(P Int Int)
tương ứng với
Trong tiếng Anh đơn giản, UNPACK
đã giải nén các nội dung của constructor P
vào lĩnh vực xây dựng T
, loại bỏ một mức độ đầu dòng vô hướng và một hàm khởi tạo (P
).
data T = T {-# UNPACK #-} !(P Int Int)
không phải là "nhỏ gọn" như data T'' = T'' Int# Int#
:
gì về
data U = U {-# UNPACK #-} !(P Int (P Int Int))
?
Tương tự, data U = U (P Int (P Int Int))
tương ứng với
và data U = U {-# UNPACK #-} !(P Int (P Int Int))
tương ứng với
Trong tiếng Anh đơn giản, UNPACK
đã giải nén các nội dung của constructor P
vào lĩnh vực xây dựng U
, loại bỏ một mức độ đầu dòng và một tiêu đề hàm dựng (P
).
Tài
Vì vậy, không có cách nào để giải nén 'T' cho 'T''' ví dụ: loại bỏ hai cấp độ của nhà xây dựng? –
@Zeta Cảm ơn bạn đã chỉnh sửa. Bạn đã tạo ra những sơ đồ đẹp như thế nào? TikZ? Thư viện 'diagrams'? – Jubobs
@Jubobs Hình như GraphVis với tôi ... – MathematicalOrchid