Sto imparando sui paradigmi dei linguaggi funzionali. Quindi ho letto che mentre il polimorfismo del sottotipo è tipico dei linguaggi OO, il polimorfismo parametrico è tipico dei linguaggi funzionali.
Ma mi chiedo se esiste il polimorfismo del sottotipo nei linguaggi funzionali. Il linguaggio funzionale che conosco meglio è Haskell, e so che ci sono dei typeclass in Haskell.
Ho sempre pensato che le classificazioni fossero in qualche modo simili alle interfacce e le interfacce sono il polimorfismo del sottotipo. Per esempio. qui:
data Foo a = Bar a | Baz String
deriving instance Eq a => Eq (Foo a)
Eq
è un typeclass che definisce l'operatore (==)
. In pratica è come una classe Foo
che implementa un'interfaccia Eq
.
Quindi quello che sto chiedendo è: questo è considerato sottotipo (o polimorfismo di sottotipo)?