Devo imparare Haskell per l'università e quindi sto usando learnyouahaskell.com per l'inizio.
Ho sempre usato le lingue imperative, quindi ho deciso di praticare Haskell codificando molto più di quanto avrei fatto per altre lingue.
ho iniziato a implementare diverse funzioni per lavorare con le liste, come head
, tail
, init
, ...
Ad un certo punto ho guardato le implementazioni di queste funzioni per confrontare al mio e mi sono imbattuto la funzione nullo definita in List.lhs
. implementazioneImplementazione della funzione nulla
di nulla:
-- | Test whether a list is empty.
null :: [a] -> Bool
null [] = True
null (_:_) = False
mia implementazione:
mNull :: [a] -> Bool
mNull [] = True
mNull _ = False
So che ci sono domande stupide, anche per tali domande semplici :)
Quindi la mia domanda è perché gli usi implementazione originale (_:_)
anziché solo _
?
C'è qualche vantaggio nell'uso di (_:_)
o ci sono casi limite che non conosco?
Non riesco a immaginare alcun vantaggio perché lo _
cattura tutto.
Questi sono davvero uguali, lo trovo anche sciocco. La mia ipotesi è che l'autore volesse essere esplicito. – MasterMastic