Ucząc się Haskella, zwróciłem uwagę na jego klasę typów , która ma być wielkim wynalazkiem wywodzącym się od Haskella.
Jednak na stronie Wikipedii o klasie typu :
Programista definiuje klasę typów, określając zestaw nazw funkcji lub stałych wraz z odpowiadającymi im typami, które muszą istnieć dla każdego typu należącego do tej klasy.
Co wydaje mi się dość bliskie interfejsowi Java (cytując stronę Interfejs Wikipedii (Java) ):
Interfejs w języku programowania Java jest typem abstrakcyjnym używanym do określenia interfejsu (w ogólnym znaczeniu tego terminu), który muszą implementować klasy.
Te dwie rzeczy wyglądają raczej podobnie: klasa typu ogranicza zachowanie typu, podczas gdy interfejs ogranicza zachowanie klasy.
Zastanawiam się, jakie są różnice i podobieństwa między klasą typów w Haskellu a interfejsem w Javie, a może są one zasadniczo różne?
EDYCJA: Zauważyłem, że nawet haskell.org przyznaje, że są podobne . Jeśli są tak podobne (a może są?), To dlaczego klasa typu jest traktowana takim szumem?
WIĘCEJ EDYCJI: Wow, tyle świetnych odpowiedzi! Myślę, że będę musiał pozwolić społeczności zdecydować, która z nich jest najlepsza. Jednak czytając odpowiedzi, wszyscy wydają się po prostu mówić, że „istnieje wiele rzeczy, które typeklasa może zrobić, podczas gdy interfejs nie może lub musi radzić sobie z typami ogólnymi” . Nie mogę pomóc, ale zastanawiam się, czy jest coś , co interfejsy mogą zrobić, a typeklasy nie? Zauważyłem również, że Wikipedia twierdzi, że typeklasa została pierwotnie wynaleziona w artykule z 1989 r. * „Jak sprawić, by polimorfizm ad-hoc był mniej ad hoc”, podczas gdy Haskell wciąż jest w swojej kolebce, podczas gdy projekt Java został uruchomiony w 1991 roku i po raz pierwszy wydany w 1995 roku Więc może zamiast typeklasy podobnej do interfejsów, jest odwrotnie, że na interfejsy miała wpływ typeklasa?Czy są jakieś dokumenty / dokumenty potwierdzające lub obalające to? Dzięki za wszystkie odpowiedzi, wszystkie są bardzo pouczające!
Dzięki za wszystkie uwagi!