Sono uno sviluppatore intermedio di Python e sto appena iniziando con Haskell. Sembra che le classi di Python possano essere usate in un modo simile a come sono usati i typeclass di Haskell. Sembra che i typeclass siano solo un modo per implementare l'overloading dell'operatore. In questo modo:
# main.py
class MyClass:
def __init__(self, num, name):
self.num = num
self.name = name
def __str__(self):
return self.name
def __radd__(self, other):
self.num + other
def __add__(self, other):
self.num + other
Ora quando fai qualcosa di simile
# main.py
c = MyClass(1, 'hello')
c2 = MyClass(2, 'foo')
str(c) # 'hello'
sum([c, c2]) # 3
Ora consente di confrontare questo con Haskell:
-- main.hs
data MyClass = Foo | Bar
instance Show MyClass where
show Foo = "foo"
show Bar = "hahahahaha"
Ora posso fare qualcosa del tipo:
show Bar -- "hahahaha"
La conoscenza del mio novizio (nella migliore delle ipotesi) mi dice che l'unico vantaggio dell'utilizzo di Haskell (se si confrontano solo queste due caratteristiche linguistiche) è che il programmatore Haskell è in grado di definire n
"operatori" da sovraccaricare mentre Python ha un elenco fisso
Ma questa non può essere l'intera storia. Quali sono le altre differenze? Cosa mi manca qui?