Aktualnie przesyłam kod z tradycyjnego Scala do stylu Scalaz.Scalaz Bind [Seq] typeclass
To dość powszechne, ponieważ większość mojego kodu używa bezpośrednio cechy Seq w moich odsłoniętych sygnaturach API, a nie konkretnym typie (np. Lista, Wektor). Jednak powoduje to pewien problem ze Scalazem, ponieważ nie zapewnia implementacji typu typowego Bind [Seq].
tj. To zadziała poprawnie.
List(1,2,3,4) >>= bindOperation
Ale to nie
Seq(1,2,3,4) >>= bindOperation
będzie niepowodzeniem z błędem could not find implicit value for parameter F0: scalaz.Bind[Seq]
Zakładam, że jest to zamierzona decyzja projektowa w Scalaz - jednak jestem pewien, przeznaczonej/najlepszych praktyk na temat poprzedzać .
Czy zamiast tego powinienem napisać mój kod bezpośrednio do Listy/Wektorów zamiast używać bardziej elastycznego interfejsu Seq? Czy powinienem po prostu zdefiniować własną czcionkę Bind [Seq]?
Istnieje jednak monadowa instancja 'IndexedSeq'. – rightfold