J'ai un très grand List[A]
et une fonction f: List[A] => List[B]
. Je voudrais divisé ma liste originale en sous-listes avec une taille maximale, appliquez la fonction à chaque sous-liste à tour de rôle, puis non divisé le résultat en un grand List[B]
. Ce assez facile:Scalaz fractionnement d'un calcul en sous-parties
def split[T](l : List[T], max : Int) : List[List[T]] = //TODO
def unsplit[T](l : List[List[T]]) : List[T] = //TODO
def apply[A, B](l : List[A], f : List[A] => List[B], max : Int) : List[B] = {
unsplit(split(l, max).map(f(_)))
}
Je me demandais si scalaz fourni des trucs standard pour faire de la boîte? En particulier la méthode apply
?
Le problème est que mon 'f' est un' M [A] => M [B] ': je ne vois rien dans scalaz qui puisse aider avec ça (je vois seulement des choses comme' A => M [B] ',' M [A => B] 'etc) –
' val f: Liste [A] => Liste [B] = ...; (carte groupée f joindre): Liste [B] ' – retronym