Mentre sto imparando Haskell, ho notato la sua classe di tipo , che dovrebbe essere una grande invenzione che ha avuto origine da Haskell.
Tuttavia, nella pagina di Wikipedia sulla classe del tipo :
Il programmatore definisce una classe di tipo specificando un insieme di nomi di funzioni o costanti, insieme ai rispettivi tipi, che devono esistere per ogni tipo che appartiene alla classe.
Che mi sembra piuttosto vicino all'interfaccia di Java (citando la pagina dell'interfaccia di Wikipedia (Java) ):
Un'interfaccia nel linguaggio di programmazione Java è un tipo astratto che viene utilizzato per specificare un'interfaccia (nel senso generico del termine) che le classi devono implementare.
Questi due sembrano piuttosto simili: la classe di tipo limita il comportamento di un tipo, mentre l'interfaccia limita il comportamento di una classe.
Mi chiedo quali siano le differenze e le somiglianze tra la classe di tipo in Haskell e l'interfaccia in Java, o forse sono fondamentalmente diverse?
EDIT: ho notato che anche haskell.org ammette che sono simili . Se sono così simili (o lo sono?), Allora perché la classe di tipo è trattata con tanto clamore?
ALTRE MODIFICHE: Wow, tante ottime risposte! Immagino che dovrò lasciare che sia la comunità a decidere qual è il migliore. Tuttavia, leggendo le risposte, sembra che tutti dicano semplicemente che "ci sono molte cose che typeclass può fare mentre l'interfaccia non può o deve far fronte ai generici" . Non posso fare a meno di chiedermi, c'è qualcosa che le interfacce possono fare mentre le typeclasses no? Inoltre, ho notato che Wikipedia afferma che la classe di caratteri è stata originariamente inventata nel documento del 1989 * "Come rendere il polimorfismo ad-hoc meno ad hoc", mentre Haskell è ancora nella sua culla, mentre il progetto Java è stato avviato nel 1991 e rilasciato per la prima volta nel 1995 Quindi forse invece di typeclass essere simile alle interfacce, è il contrario, che le interfacce siano state influenzate dalla typeclass?Esistono documenti / documenti che supportano o confutano questo? Grazie per tutte le risposte, sono tutte molto illuminanti!
Grazie per tutti gli stimoli!