Поки я навчаюсь Haskell, я помітив його клас типу , який повинен бути чудовим винаходом, що походить від Haskell.
Однак на сторінці Вікіпедії про клас типу :
Програміст визначає клас типу, задаючи набір функцій або постійних імен разом з їх відповідними типами, які повинні існувати для кожного типу, що належить до класу.
Що мені здається досить близьким до інтерфейсу Java (цитую сторінку інтерфейсу Вікіпедії (Java) ):
Інтерфейс у мові програмування Java - це абстрактний тип, який використовується для визначення інтерфейсу (у загальному сенсі цього терміна), який повинні реалізувати класи.
Ці два виглядають досить схоже: тип класу обмежує поведінку типу, тоді як інтерфейс обмежує поведінку класу.
Цікаво, які відмінності та схожість між типом класу в Haskell та інтерфейсом на Java, чи, можливо, вони принципово відрізняються?
EDIT: Я помітив, що навіть haskell.org визнає, що вони схожі . Якщо вони настільки схожі (або вони?), То чому клас типу трактується з таким ажіотажем?
БІЛЬШЕ редагування: Вау, так багато чудових відповідей! Я думаю, мені доведеться дозволити громаді вирішити, який найкращий варіант. Однак, читаючи відповіді, всі вони, здається, просто говорять про те, що "існує багато речей, якими може користуватися тип класу, в той час як інтерфейс не може або не справляється із загальними характеристиками" . Я не можу не задатись питанням: чи можна робити що-небудь інтерфейси, коли не можуть бути клас-класи? Також я зауважив, що Вікіпедія стверджує, що початковий клас був винайдений у документі 1989 року * "Як зробити спеціальний поліморфізм менш спеціальним", тоді як Haskell все ще знаходиться в колисці, тоді як проект Java був розпочатий в 1991 році і вперше випущений в 1995 році Тож, може бути, замість того, щоб typeclass був схожий на інтерфейси, навпаки, що на інтерфейси впливав typeclass?Чи є якісь документи / документи, які це підтверджують або спростовують? Дякую за всі відповіді, вони всі дуже освітянські!
Дякую за всі матеріали!