10
อินเตอร์เฟสของ Java และคลาสประเภทของ Haskell: ความแตกต่างและความคล้ายคลึงกัน?
ในขณะที่ฉันเรียนรู้ Haskell ฉันสังเกตเห็นประเภทของคลาสซึ่งน่าจะเป็นสิ่งประดิษฐ์ที่ยอดเยี่ยมที่มีต้นกำเนิดจาก Haskell อย่างไรก็ตามในหน้า Wikipedia ในประเภทคลาส : โปรแกรมเมอร์กำหนดคลาสประเภทโดยการระบุชุดของฟังก์ชันหรือชื่อคงที่พร้อมกับประเภทที่เกี่ยวข้องซึ่งต้องมีอยู่สำหรับทุกประเภทที่เป็นของคลาส ซึ่งดูเหมือนจะค่อนข้างใกล้เคียงกับอินเทอร์เฟซของ Java สำหรับฉัน (อ้างถึงหน้าอินเทอร์เฟซ (Java) ของ Wikipedia ): อินเทอร์เฟซในภาษาโปรแกรม Java เป็นประเภทนามธรรมที่ใช้เพื่อระบุส่วนต่อประสาน (ในความหมายทั่วไปของคำศัพท์) ที่คลาสต้องใช้ สองสิ่งนี้ดูค่อนข้างคล้ายกัน: คลาสประเภท จำกัด พฤติกรรมของประเภทในขณะที่อินเทอร์เฟซ จำกัด พฤติกรรมของคลาส ฉันสงสัยว่าความแตกต่างและความคล้ายคลึงกันระหว่างประเภทคลาสใน Haskell และอินเทอร์เฟซใน Java คืออะไรหรืออาจแตกต่างกันโดยพื้นฐาน แก้ไข:ผมสังเกตเห็นแม้ยอมรับ haskell.org ว่าพวกเขามีความคล้ายคลึงกัน ถ้าพวกมันคล้ายกันมาก (หรือพวกมัน?) แล้วทำไม type class ถึงได้รับการยกย่องเช่นนี้? แก้ไขเพิ่มเติม:ว้าวคำตอบที่ยอดเยี่ยมมากมาย! ฉันเดาว่าฉันจะต้องปล่อยให้ชุมชนตัดสินใจว่าอันไหนดีที่สุด อย่างไรก็ตามในขณะที่อ่านคำตอบทั้งหมดของพวกเขาดูเหมือนจะเป็นเพียงแค่บอกว่า"มีหลายสิ่ง typeclass สามารถทำในขณะที่อินเตอร์เฟซที่ไม่สามารถหรือต้องรับมือกับข้อมูลทั่วไป" ฉันอดไม่ได้ที่จะสงสัยว่ามีอินเทอร์เฟซใดบ้างที่สามารถทำได้ในขณะที่แว่นตาพิมพ์ไม่สามารถทำได้ นอกจากนี้ฉันสังเกตเห็นว่า Wikipedia …