Voici mes signatures de méthode et définitions scalaQuel est le problème avec la définition de la méthode
def accumulate[T[_]: Traversable, O: Monoid, A]: (A => O) => T[A] => O =
fao => ta =>
(implicitly[Traversable[T]].traverse[({type f[X] = Acc[O, X]})#f, A, O](ta)(a => Acc(fao(a)))).value
def reduce[T[_]: Traversable, O: Monoid]: T[O] => O = to => accumulate[T, O, O](a => a)(to)
Cependant, j'obtiens l'erreur suivante pour ma définition de réduire
Error:(160, 82) not enough arguments for method accumulate: (implicit evidence$7: Traversable[T], implicit evidence$8: Monoid[O])(O => O) => (T[O] => O).
Unspecified value parameter evidence$8.
def reduce[T[_]: Traversable, O: Monoid]: T[O] => O = to => accumulate[T, O, O](a => a)(to)
^
Je ne sais pas où je vais faux. Toute aide serait appréciée.
Merci!
Il serait plus facile si vous avez fourni une référence aux implémentations de Traversable/Monoid/Acc, afaik scala construit dans traversable n'a pas de méthode de traverse bien que la classe de type Traverse dans scalaz et les chats le font. –
@AngeloGenovese il est sûr de supposer qu'il n'y a qu'une implémentation (légale) de 'Traversable' ou' Monoid' à laquelle il peut se référer ici, c'est la version habituelle que l'on peut trouver dans 'scalaz' ou' cats'. – Yawar
@Yawar juste, mais cela signifie aussi que, afin d'essayer de reproduire son problème, j'ai passé du temps à comprendre ce que Acc ressemblait, et rappelant que les collections de scala Traversable ne sont pas les mêmes que la classe de type Traverse. Assez curieusement, en utilisant des chats et un implicite factice de Acc, je n'ai pas la même erreur de compilation sur Scala 2.10. (gratter cela, juste mon IDE cacher des choses de moi) –