Attualmente sto eseguendo il porting di un codice dallo stile tradizionale Scala a Scalaz.Scalaz Bind [Seq] typeclass
E 'abbastanza comune attraverso la maggior parte del mio codice per utilizzare il tratto Seq nelle mie firme API esposte piuttosto che un tipo concreto (cioè List, Vector) direttamente. Tuttavia, ciò pone alcuni problemi con Scalaz, poiché non fornisce un'implementazione di una classe di tipi Bind [Seq].
Ad esempio, funzionerà correttamente.
List(1,2,3,4) >>= bindOperation
Ma questo non
Seq(1,2,3,4) >>= bindOperation
sarà mancato con l'errore could not find implicit value for parameter F0: scalaz.Bind[Seq]
Presumo che ciò è una decisione di progettazione intenzionale Scalaz - tuttavia sono incerti circa destinato migliori pratiche/su come precedere .
Dovrei invece scrivere il mio codice direttamente a/Elenco di vettore a seconda dei casi, invece di utilizzare l'interfaccia più flessibile Seq? O dovrei semplicemente definire la mia propria classe Bind [Seq]?
C'è un'istanza monad di 'IndexedSeq', però. – rightfold