Haskell fornisce una classe di tipi standard "Alternativa" che fornisce effettivamente l'operatore <|>
per qualsiasi tipo che sia anche un Applicativo.Perché la classe alternativa di Alternativa deve essere una sottoclasse di Control.Applicativo
quanto ho capito alternativo è considerato un Monoide su applicativa di, tuttavia l'operatore <|>
sembra avere un senso completo in un sacco di tipi che non sono Funtori applicativi pure, e ci non ha bisogno di essere qualsiasi dipendenza specifica sulla classe di caratteri Applicativa affinché funzioni correttamente.
Esiste un motivo per cui l'alternativa deve essere una sottoclasse di Applicativo e, in tal caso, esiste una classe standard per definire funzionalità simili su tipi non applicativi?
'Monoid' sarebbe la classe per i tipi non applicativi. – Lee
@Lee, che non è del tutto corretto, come 'Monoid' è una classe di tipi e' Alternative' è una classe di costruttori di tipi. Vorrei poter avere dei limiti localmente quantificati sui costruttori di tipi, come '(forall a. Monoid f a)' ma ciò non è permesso. – pigworker
Tecnicamente l'alternativa è solo "Monoid for Applicatives", quindi "Monoid" sembrerebbe essere il caso più comune, poiché capisco che l'uso previsto dell'operatore '<|>' è "Pick or ore another", che è in qualche modo diverso da 'mconcat'? –