|
Publicité ' | |||||||||||||||||||||||
|
|
#1 | ||||
|
Membre actif
![]() ![]() Leroux SylvainInscription : mai 2010 Messages : 36 ![]() |
En surfant un peu, j'ai trouvé l'article suivant:
http://jonasboner.com/2008/10/06/rea...ection-di.html Celui-ci explique que Scala possède au niveau du langage tout le nécessaire pour faire de l'injection de dépendances - donc sans requérir l'utilisation d'un framework spécialisé. Je ne vais pas répéter l'ensemble de l'article ici, mais au final, toute la configuration se fait dans un object Scala "ordinaire": Code scala :
Code scala :
Un argument fort qui est cité est que l'ensemble est statiquement typé. Ce qui permet au compilateur de détecter les incohérences de type - et réduit les surprises au déploiement. Que pensez-vous de ce genre de technique? Est-ce que l'argument de la vérification des types donne vraiment un avantage concurrentiel à Scala sur ce point? Est-ce que cela pourrait motiver votre adoption de ce langage? - Sylvain |
||||
|
|
00
|
|
|
#2 |
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 89 ![]() |
Réponse un peu en retard mais bon
Ce que l'on n'oublie c'est qu'un framework comme Spring permet l'externalisation de la configuration via les fichiers XML. On peut parcourir l'application sans rentrer dans le code. Je trouve le couplage trop fort avec une solution comme celle-là. Avec Spring, l'instanciation de l'objet est cachée et on a plus de contrôle sur le cycle de vie de l'objet, tout ça avec un couplage beaucoup plus faible |
|
12
|
|
|
#3 | ||||||||||||||||||||
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 89 ![]() |
Voici une technique "d'injection de dépendances" que j'utilise dans mes projets Scala. Je la trouve personnellement plus fonctionnelle.
Tout abord, définissons le trait Functor: Code :
Code :
Code :
Code :
Code :
Code :
Maintenant passons à l'injection à proprement parlé. Définisson le trait Environment comme suit Code :
Code :
Code :
Code :
Que pensez-vous de cette technique ? Des points à améliorer ? |
||||||||||||||||||||
|
00
|
|
|
#4 | |
|
Invité régulier
![]() Inscription : février 2006 Messages : 5 ![]() |
Citation:
![]() Si en plus les "monads transformers" sont abordés...(au hasard, ValidationT avec un Writer )Benoît |
|
|
|
00
|
|
|
#5 |
|
Membre confirmé
![]() Ingénieur développement logiciels Inscription : mai 2009 Messages : 89 ![]() |
A vrai dire les Monad Transformer viennent du monde Haskell.
Une grande majorité des contributeurs de Scalaz font de l'Haskell. Ils veulent tous avoir les puissantes api provenant de ce langage (compréhensible car elles sont terriblement efficaces) Le problème c'est que l'inférence de type en Scala ne fonctionne pas très bien avec ce style et les signatures des méthodes deviennent effrayantes pour les néophytes (tu as du le remarquer quand tu regardes le code source de ValidationT.scala ).Un tutoriel sur la programmation fonctionnelle en Scala ? Pourquoi pas mais ça sera que des traductions Anglais => Français ou des ports Haskell => Scala car le sujet a été depuis 2007 beaucoup discuté dans la communauté Scala. Haskell couvre ces sujets depuis au moins une dizaine d'années. Mais pourquoi pas Quand à l'utilisation d'un ValidationT avec un Writer, je veux bien te fournir un exemple qui compile si tu n'arrives pas avec les modifs que j'ai mis sur StackOverflow. Il semble qu'il y ait un problème avec le type Id. Depuis la réécriture de scalaz-seven, Id est exprimé comme suit: Alors que dans Scalaz 6, c'était fait par une conversion implicite vers ce trait Il y a peut-être une régression avec certaines typeclass (comme Pointed). Si tel était le cas, je proposerais un fix |
|
00
|
|
|
#6 |
|
Invité régulier
![]() Inscription : février 2006 Messages : 5 ![]() |
Ce qui pourrait être intéressant, c'est un (ou des) tuto(s) sur les patterns de la programmation fonctionnelle en scala. Un peu du genre de ce que tu as écrit dans cette discussion où tu montres à quoi sert une monad Free.
Pour en revenir à scalaz, c'est vrai que les signatures des fonctions sont pour le moins redoutables! Mais je pense que cette librairie apporte un vrai confort. Je l'ai expérimenté avec Validation. Quant à notre discussion sur Stackoverflow, je te remercie encore sincèrement de ton aide, mais le code que tu as posté ne compile toujours pas chez moi Un cookbook sur scalaz serait quand même le bienvenu! Benoît |
|
|
00
|
Copyright © 2000-2013 - www.developpez.com