From 559ad0b6bdf1b3a0a704878457e1fef20ba6514f Mon Sep 17 00:00:00 2001 From: Julien Blanchard Date: Sun, 15 Mar 2015 14:47:58 +0100 Subject: [PATCH 1/4] FAQ & Cabal closes #20 --- guide-fr.md | 47 ++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 46 insertions(+), 1 deletion(-) diff --git a/guide-fr.md b/guide-fr.md index 596555b..83a9f51 100644 --- a/guide-fr.md +++ b/guide-fr.md @@ -484,6 +484,51 @@ Disponible sur [hackage](https://hackage.haskell.org/package/aeson) et - [SublimeHaskell](https://github.com/SublimeHaskell/SublimeHaskell) +# FAQ et utilisation de Cabal + +## Une FAQ fantastique + +En plus d'être un guide extraordinaire pour pleins de sujets comme les GADT, +il couvre aussi des some useful basics for Cabal + +- [Ce que j'aurais aimé savoir lors de mon apprentissage d'Haskell](http://dev.stephendiehl.com/hask/) + aussi sur github [ici](https://github.com/sdiehl/wiwinwlh). + +## recommandations pour Cabal + +L'enfer avec Cabal était un problème pour les utilisateurs d'Haskell avant l'introduction +des bacs à sable. Installer en dehors d'un bac à sable va installer dans le package-db +de l'utilisateur. Ce n'est *pas* une bonne idée mis à part pour quelques librairies +fondamentales comme Cabal, alex, et happy. Rien d'autre ne devrait être installé dans le +package-db de l'utilsateur ou le global à moins que vous ne sachiez ce que vous faites. + +Quelques bonnes pratiques pour éviter l'enfer avec cabal sont disponibles +[ici](http://softwaresimply.blogspot.com/2014/07/haskell-best-practices-for-avoiding.html). + +Pour expérimenter avec un package ou démarrer un projet, commencez par +`cabal sandbox init` dans un nouveau dossier. + +Pour résumer: + +- Toujours utiliser des bacs à sable pour installer de nouveaux packages, créer des + projets, ou démarrer des experimentations + +- Utiliser `cabal repl` pour démarrer une instance ghci dans un projet + +L'approche basée sur les bacs à sable que je suggère permet d'éviter les problèmes +liés à la gestion des dépendances des packages, mais elle n'est pas compatible avec +les packages pré-construits fournis par Haskell Platform. +Si vous apprenez Haskell et ne comprenez pas comment ghc-pkg et Cabal fonctionnent, +*évitez platform* et utilisez les instructions préalables du guide à la place. + +## Stackage + +Pour les utilisateurs (de Yesod généralement) qui ont des problèmes de build, considérez Stackage. + +- Un bon résumé de ce qu'est Stackage + [ici](https://www.fpcomplete.com/blog/2014/05/stackage-server). + +L'auteur éstime que Stackage est généralement plus utile que `cabal freeze`. # Hoogle et Haddock @@ -540,6 +585,6 @@ cabal haddock --hoogle --hyperlink-source \ # TravisCI Si vous êtes comme moi un grand fan de [TravisCI](https://travis-ci.org), je -vous recommande alors *fortement* de jeter un œuil à +vous recommande alors *fortement* de jeter un œuil à [multi-ghc-travis](https://github.com/hvr/multi-ghc-travis) pour avoir une base pour de fichier `travis.yml` pour vos projets Haskell. From 30257ac1839dff401d10163c6070c7e5918ff424 Mon Sep 17 00:00:00 2001 From: Julien Blanchard Date: Sun, 15 Mar 2015 15:06:14 +0100 Subject: [PATCH 2/4] lambda-calcul --- guide-fr.md | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/guide-fr.md b/guide-fr.md index 83a9f51..f92e725 100644 --- a/guide-fr.md +++ b/guide-fr.md @@ -588,3 +588,17 @@ Si vous êtes comme moi un grand fan de [TravisCI](https://travis-ci.org), je vous recommande alors *fortement* de jeter un œuil à [multi-ghc-travis](https://github.com/hvr/multi-ghc-travis) pour avoir une base pour de fichier `travis.yml` pour vos projets Haskell. + +# Pour mieux comprendre l'évaluation paresseuse, NF, WHNF + +- [Notes sur lambda-calcul](https://vec.io/posts/notes-on-lambda-calculus). + +## Documents de recherche sur le lambda-calcul paresseux + +- [La nécessité du lambda-calcul](http://homepages.inf.ed.ac.uk/wadler/topics/call-by-need.html#need-journal). + +- [Démonstration de la réduction avec lambda-calcul](http://www.itu.dk/~sestoft/papers/sestoft-lamreduce.pdf) + +- [Le lambda-calcul paresseux](http://www.cs.ox.ac.uk/files/293/lazy.pdf). + +- [Evaluation paresseuse en Haskell](http://www.vex.net/~trebla/haskell/lazy.xhtlm) From f3689ea1769095e701fbe9ba380a2672295f303f Mon Sep 17 00:00:00 2001 From: Julien Blanchard Date: Sun, 15 Mar 2015 15:06:41 +0100 Subject: [PATCH 3/4] Parallelisme/Concurence --- guide-fr.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/guide-fr.md b/guide-fr.md index f92e725..4a76778 100644 --- a/guide-fr.md +++ b/guide-fr.md @@ -602,3 +602,14 @@ pour de fichier `travis.yml` pour vos projets Haskell. - [Le lambda-calcul paresseux](http://www.cs.ox.ac.uk/files/293/lazy.pdf). - [Evaluation paresseuse en Haskell](http://www.vex.net/~trebla/haskell/lazy.xhtlm) + +# Parallelisme / Concurrence + +- [Programmation Parallele et Concurente en Haskell](http://chimera.labs.oreilly.com/books/1230000000929) + Ce livre de Simon Marlow est probablement le meilleur que j'ai lu sur le sujet du parallelisme et de + la concurence. + +- Un [pas à pas](http://kukuruku.co/hub/haskell/haskell-testing-a-multithread-application) complet + sur les tests et le développement incrémental d'une application multi-threadée en Haskell. + +- [Programmation Fonctionelle Réactive](http://www.haskell.org/haskellwiki/Functional_Reactive_Programming) From a6b6139fee67820cbe1cf047322e03ca2a7d613a Mon Sep 17 00:00:00 2001 From: Julien Blanchard Date: Sun, 15 Mar 2015 15:06:59 +0100 Subject: [PATCH 4/4] Lens/Prisms --- guide-fr.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/guide-fr.md b/guide-fr.md index 4a76778..2460d30 100644 --- a/guide-fr.md +++ b/guide-fr.md @@ -613,3 +613,23 @@ pour de fichier `travis.yml` pour vos projets Haskell. sur les tests et le développement incrémental d'une application multi-threadée en Haskell. - [Programmation Fonctionelle Réactive](http://www.haskell.org/haskellwiki/Functional_Reactive_Programming) + +# Lenses et Prisms + +Une fois que êtes confortables avec Haskell, vous devriez considérer fortement l'apprentissage +des Lenses et Prisms, même en tant que simple "utilisateur". Vous n'avez pas besoin de comprendre +la catégorie sous-jascente pour que celà vous soit utile. + +Les gens sur-estiment grandement la difficulté d'utiliser les Lens. Quiconque confortable +avec Functor/Foldable/Traversable (ou juste le premier) peux utiliser les +lenses et prisms et rendre leur vie plus heureuse. + +Si vous avez déjà fait quelque chose comme: `(fmap . fmap)` vous étiez en train de "lenser" dans votre tête. + +Je recommande ces deux tutoriels / introductions: + +- [Un petit tutriel sur Lens pour commencer](https://www.fpcomplete.com/school/to-infinity-and-beyond/pick-of-the-week/a-little-lens-starter-tutorial) + +- [Lens: Lenses, Folds et Traversals](https://github.com/ekmett/lens#lens-lenses-folds-and-traversals) + +Regardez ici pour plus d'informations: [Lens package on hackage](http://hackage.haskell.org/package/lens).