Интерфейс Java и класс типов Haskell: различия и сходства?

Пока я изучаю Haskell, я заметил его класс типов , который, как предполагается, является великим изобретением, появившимся в Haskell.

Однако в на странице Википедии о классе типа :

Программист определяет класс типа, указав набор функций или имена констант вместе с соответствующими типами, которые должны существовать для каждого типа, принадлежащего этому классу.

Что мне кажется довольно близким к Интерфейсу Java (цитируя страницу Интерфейса Википедии (Java) ):

Интерфейс в Язык программирования Java - это абстрактный тип, который используется для указания интерфейса (в общем смысле этого слова) эти классы должны реализовываться.

Эти два выглядят довольно схожими: класс типа ограничивает поведение типа, а интерфейс ограничивает поведение класса.

Интересно, каковы различия и сходства между классом типа в Haskell и интерфейсом в Java, или, может быть, они принципиально разные?

РЕДАКТИРОВАТЬ: Я заметил , даже haskell.org признает, что они похожи . Если они так похожи (или они?), То почему класс типов рассматривается с такой шумихой?

БОЛЬШЕ ИЗМЕНИТЬ: Вау, так много отличных ответов! Думаю, мне придется позволить сообществу решить, какой из них лучший. Однако, читая ответы, все они, кажется, просто говорят, что «класс типов может многое сделать, в то время как интерфейс не может или должен справляться с обобщениями» . Я не могу не задаться вопросом, могут ли интерфейсы что-то делать, а классы типов - нет? Кроме того, я заметил, что Википедия утверждает, что класс типов был первоначально изобретен в статье 1989 г. * «Как сделать специальный полиморфизм менее специальным ", в то время как Haskell все еще находится в колыбели, а проект Java был начат в 1991 году и впервые выпущен в 1995 году. Так что , может быть, вместо того, чтобы класс типов был похож на интерфейсы, наоборот, на интерфейсы повлиял класс типов? Есть ли какие-либо документы / документы, подтверждающие или опровергающие это? Спасибо за все ответы, они все очень поучительны!

Спасибо за все ответы!

99
задан zw324 5 August 2011 в 13:38
поделиться