J'ai eu une certaine expérience à Haskell et j'apprends actuellement Scala. Je me demande s'il y a quelque chose d'équivalent à Monads à Scala ?? P>
4 Réponses :
Vous voulez probablement vérifier Scalaz strong> ; Cela a été fortement influencé par Haskell. En effet, il a souvent été demandé à l'un des principaux contributeurs pourquoi ils ne sont pas juste em> utiliser HASKELLL, car ils semblent aimer cela tellement! Scalaz utilise de lourdes implicites afin de décorer des structures avec leurs monades. Par exemple: p>
En fait, le commentaire @VONC sur ma question m'a donné plus de détails. Mais je ne peux pas accepter cette réponse, aussi @Oxbow_Lake m'a montré quelque chose de nouveau. Merci gars de l'aide
BTW: Les auteurs de Scalaz font i> Haskell. Si vous regardez le Sourcecode de Scalaz, vous verrez qu'ils utilisent HASKELLL pour le système de construction au lieu de la fourmi, par exemple. En outre, Tony Morris (l'auteur principal) est i> un programmeur Hakell assez connu. Il est également l'auteur de Functionaljava, qui est une bibliothèque qui met en œuvre des foncteurs, des foncteurs applicatifs, des bifugneurs, des monades, des comonads et des flèches pour Java (tout comme Scalaz fait pour Scala). Et quant à pourquoi utiliser Scala: le système de type de Scala et la langue est en fait dans plusieurs domaines plus puissants et expressifs que celui de Haskell.
@Jorg - Je sais que Tony utilise Haskell, j'impliquais que cela avait été demandé exactement pourquoi i> a déjà utilisé Scala!
Cet extrait a l'air génial. Mais comment le travailler? Il n'y a pas de fonction itérale sur tuplle2. J'ai inclus Scalaz sur la classe de classe, mais toujours pas de joie.
Regardez les exemples Scalaz. Vous devez importer Scalaz._ et utiliser 2.8. Le tuple2 est implicitement converti dans l'identité monade
Vous utilisez donc -> code> comme alternative à écrire quelque chose en tant que tuple? Mais l'objet à gauche est un tuple écrit comme tuple? Cela semble incompatible et rendait le code difficile à lire pour moi car je m'attendais à quelque chose comme une carte
code>.
Je pense qu'il convient de noter que "la compréhension" de Scala est équivalente à la monadique de Haskell "faire" p>
Les deux options et la liste sont des monades. Je crois aussi que les projections gauche et droite sont aussi des monades. P>
Il n'y a pas de concept explicite de monad dans la bibliothèque standard Scala (il n'existe pas de trait / classe ou de typlass appropriés). P>
Scala traite de cela en genre de manière ad hoc, voir Scala par Exemple Section de la section sur
Avez-vous considéré Stackoverflow.com/questions/1992532/monad-trai-in-scala ?