ฉันเข้าใจวิธีที่จะนิยามทั้งสอง homogeneous และ heterogeneous ที่บีดอัดอยู่ในภาษา haskelllanguage.
-- Type-invariant streams.
data InvStream a where
(:::) :: a -> InvStream a -> InvStream a
-- Heterogeneous Streams.
data HStream :: InvStream * -> * where
HCons :: x -> HStream xs -> HStream (x '::: xs)
แล้วพวกเราจะเป็นยังไงกำหนดเป็นอย่างต่อเนื่องสายข้อมูลที่เป็นกรณีพิเศษของ heterogeneous อสายข้อมูล? ถ้าฉันพยายามจะกำหนดประเภทครอบครัวของที่บีดอัดของอย่างต่อเนื่องประเภทฉันได้"การแก้งานเอ่อล้นออกมา"ข้อผิดพลาด ฉันจินตนาการนี้ต้องมีส่วนเกี่ยวข้องกับคนแบบดูอัลกอริธึมไม่ได้เป็นคนขี้เกียจมากพอแล้วพยายามที่จะสะทกสะทานเลยละสิตลอด Constant a
สายข้อมูลของชนิด
type family Constant (a :: *) :: InvStream * where
Constant a = a '::: Constant a
constantStream :: a -> HStream (Constant a)
constantStream x = HCons x (constantStream x)
มีทางไหนไหมที่ฉันสามารถจะจัดการเรื่องนี้ปัญหาและนิยามค่าคงที่ heterogeneous ที่บีดอัด? มีอะไรอื่นที่คล้ายกันก่อสร้างฉันควรจะพยายามแทน?