อ่าน 2 นาที
ความเป็นพารามิเตอร์
ใน ทฤษฎีภาษาโปรแกรม ความเป็นพารามิเตอร์ (parametricity) เป็นคุณสมบัติความสม่ำเสมอเชิงนามธรรมของ ฟังก์ชัน พหุรูปเชิงพารามิเตอร์ ซึ่งแสดงให้เห็นถึงสัญชาตญาณที่ว่า...
ความเป็นพารามิเตอร์
ในทฤษฎีภาษาโปรแกรมความเป็นพารามิเตอร์ (parametricity)เป็นคุณสมบัติความสม่ำเสมอเชิงนามธรรมของ ฟังก์ชัน พหุรูปเชิงพารามิเตอร์ซึ่งแสดงให้เห็นถึงสัญชาตญาณที่ว่า อินสแตนซ์ทั้งหมดของฟังก์ชันพหุรูปจะทำงานในลักษณะเดียวกัน
ความคิด
พิจารณาตัวอย่างนี้ โดยอิงจากเซตXและประเภทT ( X ) = [ X → X ] ของฟังก์ชันจากXไปยังตัวมันเอง ฟังก์ชันลำดับสูงกว่าสองเท่าX : T ( X ) → T ( X ) ที่กำหนดโดยสองเท่าX ( f ) = f ∘ f นั้น โดยสัญชาตญาณแล้วเป็นอิสระจากเซตXตระกูลของฟังก์ชันสองเท่าX ทั้งหมดดังกล่าว ซึ่งกำหนดพารามิเตอร์โดยเซตXเรียกว่า " ฟังก์ชันพหุรูปเชิงพารามิเตอร์ " เราเพียงแค่เขียนสองเท่าสำหรับตระกูลของฟังก์ชันทั้งหมดเหล่านี้ และเขียนประเภทของมันเป็นX . T ( X ) → T ( X ) ฟังก์ชันแต่ละตัวที่เป็นสองเท่าXเรียกว่าส่วนประกอบหรืออินสแตนซ์ของฟังก์ชันพหุรูป สังเกตว่าฟังก์ชันส่วนประกอบสองเท่าX ทั้งหมด ทำงาน "ในลักษณะเดียวกัน" เพราะพวกมันถูกกำหนดโดยกฎเดียวกัน ตระกูลของฟังก์ชันอื่นๆ ที่ได้จากการเลือกฟังก์ชันใดๆ จากแต่ละT ( X ) → T ( X ) จะไม่มีความสม่ำเสมอเช่นนี้ พวกมันเรียกว่า"ฟังก์ชัน พหุรูป เฉพาะกิจ " ความเป็นพาราเมตริกคือคุณสมบัติเชิงนามธรรมที่พบในตระกูลฟังก์ชันที่ทำหน้าที่สม่ำเสมอ เช่น ฟังก์ชันtwiceซึ่งทำให้แตกต่างจาก ตระกูลฟังก์ชัน เฉพาะกิจด้วยการกำหนดรูปแบบที่เป็นทางการของความเป็นพาราเมตริกอย่างเหมาะสม ทำให้สามารถพิสูจน์ได้ว่าฟังก์ชันพหุรูปพาราเมตริกประเภทX . T ( X ) → T ( X ) เป็นฟังก์ชันหนึ่งต่อหนึ่งกับจำนวนธรรมชาติ ฟังก์ชันที่สอดคล้องกับจำนวนธรรมชาติnกำหนดโดยกฎf f n นั่นคือ จำนวน Churchพหุรูปสำหรับnในทางตรงกันข้าม กลุ่มของ ตระกูล ฟังก์ชันเฉพาะกิจ ทั้งหมด จะมีขนาดใหญ่เกินกว่าจะเป็นเซตได้
ประวัติศาสตร์
ทฤษฎีบทพาราเมตริกได้รับการกล่าวถึงครั้งแรกโดยJohn C. Reynoldsซึ่งเรียกมันว่าทฤษฎีบทนามธรรม [ 1 ] ในบทความของเขาเรื่อง "Theorems for free!" [ 2 ] Philip Wadlerได้อธิบายการประยุกต์ใช้พาราเมตริกเพื่อหาทฤษฎีบทเกี่ยวกับฟังก์ชันโพลีมอร์ฟิกพาราเมตริกโดยอาศัยประเภทของฟังก์ชันเหล่านั้น
การนำภาษาโปรแกรมไปใช้
ความเป็นพารามิเตอร์เป็นพื้นฐานสำหรับการแปลงโปรแกรม หลายอย่าง ที่นำมาใช้ในคอมไพเลอร์สำหรับภาษาโปรแกรมHaskellการแปลงเหล่านี้ถือว่าถูกต้องใน Haskell มาแต่เดิมเนื่องจาก ความหมาย ที่ไม่เข้มงวด ของ Haskell แม้จะเป็น ภาษาโปรแกรมแบบ ประเมินแบบขี้เกียจแต่ Haskell ก็รองรับการดำเนินการพื้นฐานบางอย่าง เช่น ตัวดำเนินการseq— ที่ช่วยให้ เกิด ความเข้มงวดแบบเลือกได้ซึ่งอนุญาตให้บังคับการประเมินสำหรับนิพจน์บางอย่าง ในบทความ "Free theorems in the presence of seq " [ 3 ] Patricia Johann และ Janis Voigtlaender แสดงให้เห็นว่าเนื่องจากการมีอยู่ของการดำเนินการเหล่านี้ ทฤษฎีบทความเป็นพารามิเตอร์ทั่วไปจึงไม่เป็นจริงสำหรับโปรแกรม Haskell ดังนั้นการแปลงเหล่านี้จึงไม่ถูกต้องโดยทั่วไป
ประเภทที่ขึ้นอยู่กับ
ดูเพิ่มเติม
ลิงก์ภายนอก
- วาดเลอร์: ความเป็นพารามิเตอร์
สรุปเนื้อหา
ข้อมูลสำคัญจากบทความ
ข้อมูลสำคัญเกี่ยวกับ ความเป็นพารามิเตอร์
ใน ทฤษฎีภาษาโปรแกรม ความเป็นพารามิเตอร์ (parametricity) เป็นคุณสมบัติความสม่ำเสมอเชิงนามธรรมของ ฟังก์ชัน พหุรูปเชิงพารามิเตอร์ ซึ่งแสดงให้เห็นถึงสัญชาตญาณที่ว่า...
ความคิด
พิจารณาตัวอย่างนี้ โดยอิงจากเซต X และประเภท T ( X ) = [ X → X ] ของฟังก์ชันจาก X ไปยังตัวมันเอง ฟังก์ชันลำดับสูงกว่า สองเท่า X : T ( X ) → T ( X ) ที่กำหนดโดย สองเท่า X ( f ) = f ∘ f นั้น โดยสัญชาตญาณแล้วเป็นอิสระจากเซต X ตระกูลของฟังก์ชัน สองเท่า X...
ประวัติศาสตร์
ทฤษฎีบท พาราเมตริก ได้รับการกล่าวถึงครั้งแรกโดย John C. Reynolds ซึ่งเรียกมันว่า ทฤษฎีบทนามธรรม [ 1 ] ใน บทความของเขาเรื่อง "Theorems for free!
การนำภาษาโปรแกรมไปใช้
ความเป็นพารามิเตอร์เป็นพื้นฐานสำหรับ การแปลงโปรแกรม หลายอย่าง ที่นำมาใช้ใน คอมไพเลอร์ สำหรับ ภาษาโปรแกรม Haskell การแปลงเหล่านี้ถือว่าถูกต้องใน Haskell มาแต่เดิมเนื่องจาก ความหมาย ที่ไม่เข้มงวด ของ Haskell แม้จะเป็น ภาษาโปรแกรมแบบ ประเมินแบบขี้เกียจ แต่...