Saat saya mempelajari Haskell, saya melihat kelas tipenya , yang seharusnya merupakan penemuan hebat yang berasal dari Haskell.
Namun, di halaman Wikipedia tentang kelas tipe :
Pemrogram mendefinisikan kelas tipe dengan menetapkan sekumpulan fungsi atau nama konstanta, bersama dengan tipenya masing-masing, yang harus ada untuk setiap tipe yang termasuk dalam kelas tersebut.
Yang tampaknya agak dekat dengan Antarmuka Java bagi saya (mengutip halaman Antarmuka Wikipedia (Java) ):
Antarmuka dalam bahasa pemrograman Java adalah tipe abstrak yang digunakan untuk menentukan antarmuka (dalam pengertian umum istilah) yang harus diterapkan kelas.
Keduanya terlihat agak mirip: kelas tipe membatasi perilaku tipe, sementara antarmuka membatasi perilaku kelas.
Saya ingin tahu apa perbedaan dan persamaan antara kelas tipe di Haskell dan antarmuka di Java, atau mungkin mereka berbeda secara mendasar?
EDIT: Saya perhatikan bahkan haskell.org mengakui bahwa mereka serupa . Jika mereka sangat mirip (atau apakah mereka?), Lalu mengapa kelas tipe diperlakukan dengan hype seperti itu?
EDIT LEBIH BANYAK: Wow, begitu banyak jawaban bagus! Saya rasa saya harus membiarkan komunitas memutuskan mana yang terbaik. Namun, saat membaca jawaban, semuanya sepertinya hanya mengatakan bahwa "ada banyak hal yang dapat dilakukan kelas tipe sementara antarmuka tidak dapat atau harus mengatasi obat generik" . Saya bertanya-tanya, adakah antarmuka yang dapat dilakukan sementara kelas tipe tidak bisa? Selain itu, saya perhatikan bahwa Wikipedia mengklaim bahwa kelas tipe awalnya ditemukan pada makalah tahun 1989 * "Cara membuat polimorfisme ad-hoc kurang ad hoc", sementara Haskell masih dalam buaiannya, sementara proyek Java dimulai pada tahun 1991 dan pertama kali dirilis pada tahun 1995 Jadi mungkin bukan kelas tipe yang mirip dengan antarmuka, sebaliknya, antarmuka itu dipengaruhi oleh kelas tipe?Apakah ada dokumen / kertas yang mendukung atau menyangkal hal ini? Terima kasih atas semua jawaban, semuanya sangat mencerahkan!
Terima kasih atas semua masukannya!