คำถามนี้ไม่ใช่เรื่องส่วนตัว ใช้คำกริยาที่เจาะจงมากในหนังสืออ้างอิงและฉันต้องการที่จะเข้าใจความหมายของถ้อยคำนั้นเพราะฉันกลัวว่าฉันเข้าใจผิดบางอย่าง
จากLearn You a Haskellย่อหน้าต่อไปนี้เป็นย่อหน้าที่สามและสุดท้ายที่มีคำว่า "เราถือว่า*"
data Barry t k p = Barry { yabba :: p, dabba :: t k }
Functorและตอนนี้เราต้องการที่จะทำให้มันเป็นตัวอย่างของFunctorต้องการประเภทของประเภท* -> *แต่Barryดูเหมือนว่าจะมีชนิดนั้น ชนิดของBarryอะไรsomething -> something -> something -> *ดีที่เราเห็นมันต้องใช้เวลาสามพารามิเตอร์ชนิดดังนั้นจึงเป็นไปได้ มันปลอดภัยที่จะบอกว่าเป็นชนิดที่เป็นรูปธรรมและทำให้มีชนิดของpสำหรับเราคิดและอื่น ๆ โดยขยายมีชนิดของ ตอนนี้ขอเพียงแค่เปลี่ยนชนิดผู้ที่มีของที่เรานำมาใช้เป็นตัวยึดและเราพบว่ามีชนิดของ*k*t* -> *something(* -> *) -> * -> * -> *
ทำไมเราถึงคิดอะไรอยู่เลย? เมื่ออ่าน "เราถือว่า X (เช่นเราถือว่า X เป็นจริง)" เป็นเรื่องปกติที่ฉันจะคิดว่าเราควรพิจารณากรณีที่ X เป็นเท็จ ในกรณีที่เฉพาะเจาะจงของตัวอย่างไม่tสามารถเป็นประเภท(* -> *) -> *และkชนิด(* -> *)? หากเป็นเช่นนี้อะไรtและที่kจริงแล้วt kจะยังคงเป็นรูปธรรมหรือไม่?
ผมเห็นว่าสายทั้งเหตุผลมีการตรวจสอบแล้วกับคอมไพเลอร์ แต่ผมไม่คิดว่าคอมไพเลอร์จะถือว่า ถ้าเป็นเช่นนั้นฉันอยากรู้ว่าถ้าไม่เป็นเช่นนั้นอีกครั้งฉันเกรงว่าฉันไม่มีความหมายของย่อหน้า
k :: Lชนิดใด ๆตราบใดที่Lt :: L -> *คอมไพเลอร์ที่นี่จะต้องเลือกเฉพาะบางอย่างLหรือรีสอร์ทเพื่อ polykind polykind จะเป็นตัวเลือกที่ธรรมดาที่สุด แต่ที่นี่เลือก GHCL = *(Haskell พื้นฐานไม่มี polykinds พวกเขาต้องเปิดเป็นส่วนขยาย) เนื่องจากมันเลือกบางอย่างที่ค่อนข้างไม่มีกฎเกณฑ์ LYAH จึงใช้คำว่า "สมมติ" (AFAICT)