@ -9,7 +9,7 @@ Ceci est ma façon recommandée d'apprendre Haskell.
Notre canal IRC est `#haskell-beginners` sur Freenode.
Notre canal IRC est `#haskell-beginners` sur Freenode.
Client web IRC [ici](http://webchat.freenode.net/).
Un client web IRC [ici](http://webchat.freenode.net/).
Les [listes de diffusion](https://wiki.haskell.org/Mailing_lists) Haskell.
Les [listes de diffusion](https://wiki.haskell.org/Mailing_lists) Haskell.
@ -17,7 +17,7 @@ Les [listes de diffusion](https://wiki.haskell.org/Mailing_lists) Haskell.
[Voir le post sur l'enseignement de Chris Done](http://chrisdone.com/posts/teaching)
[Voir le post sur l'enseignement de Chris Done](http://chrisdone.com/posts/teaching)
Soyez gentils et courtois. Etre méchant ou déagréable fait peur aux autres et ne les encourage pas à participer.
Soyez gentils et courtois. Etre méchant ou désagréable fait peur aux autres et ne les encourage pas à participer.
Une critique pour le plaisir de critiquer ne sers que la personne qui la fait, pas celle qui la reçoit.
Une critique pour le plaisir de critiquer ne sers que la personne qui la fait, pas celle qui la reçoit.
@ -41,11 +41,11 @@ Haskell est un langage de programmation, défini par une spécification, la plus
## GHC
## GHC
[GHC](http://www.haskell.org/ghc/) est le moyen le plus populaire de travailler avec le langage Haskell. Il inclut compilateur, REPL(interpréteur), gestion de paquets, et plus encore.
[GHC](http://www.haskell.org/ghc/) est le moyen le plus populaire de travailler avec le langage Haskell. Il inclut un compilateur, et un REPL(interpréteur), la gestion de paquets, et plus encore.
## Cabal
## Cabal
[Cabal](https://www.haskell.org/cabal/download.html) s'occupe de la gestion du projet et de la résolution des dépendances. C'est lui qui aide à l'installation de projets, typiquement dans leurs propres sandbox.
[Cabal](https://www.haskell.org/cabal/download.html) s'occupe de la gestion du projet et de la résolution des dépendances. C'est lui qui aide à l'installation de projets, typiquement dans leurs propres bac à sable.
Cabal est l'équivalent de Bundler pour Ruby, de pip pour Python, de NPM pour Node, Maven, etc. GHC gère le packaging lui-même, Cabal choisit quelles versions doivent être installées.
Cabal est l'équivalent de Bundler pour Ruby, de pip pour Python, de NPM pour Node, Maven, etc. GHC gère le packaging lui-même, Cabal choisit quelles versions doivent être installées.
@ -75,7 +75,7 @@ Après, ajoutez ce qui suit à votre `$PATH` (bash\_profile, zshrc, bashrc, etc.
*Optionnel:* Vous pouvez aussi ajouter `.cabal-sandbox/bin` à votre _path_.
*Optionnel:* Vous pouvez aussi ajouter `.cabal-sandbox/bin` à votre _path_.
Ainsi, vous aurez accès au code que vous serez en train de développer directement
Ainsi, vous aurez accès au code que vous serez en train de développer directement
en ligne de commandes. Cela ne marchera que si votre répertoire de travail actuel
en ligne de commandes. Cela ne marchera que si votre répertoire de travail actuel
contient une _sandbox_ cabal.
contient un_bac à sable_ cabal.
## Debian
## Debian
@ -87,7 +87,7 @@ http://deb.haskell.org/. Pour cela:
- Ajouter la ligne `deb http://deb.haskell.org/stable/ ./` à `/etc/apt/sources.list`
- Ajouter la ligne `deb http://deb.haskell.org/stable/ ./` à `/etc/apt/sources.list`
```bash
```bash
## Ajoute la clé pour supprimer les messages d'avertissement
## Ajouter la clé pour supprimer les messages d'avertissement
$ GET http://deb.haskell.org/deb.haskell.org.gpg-key | apt-key add -
$ GET http://deb.haskell.org/deb.haskell.org.gpg-key | apt-key add -
$ sudo apt-get update
$ sudo apt-get update
$ sudo apt-get install ghc-7.8.3 happy alex cabal-install
$ sudo apt-get install ghc-7.8.3 happy alex cabal-install
Gentoo garde une version "stable" (comprenez: vieille) de `cabal-install`
Gentoo garde une version "stable" (comprenez: vieille) de `cabal-install`
dans la hierarchie de Portage. Donc, si vous allez devoir utiliser
dans la hierarchie de Portage. Donc vous allez devoir utiliser
`cabal-install` pour installer la dernière version. Notez que les backslashes
`cabal-install` pour installer la dernière version. Notez que les backslashes
sont intentionnels dans ce qui suit.
sont intentionnels dans ce qui suit.
```bash
```bash
@ -214,13 +214,13 @@ Félicitations ! Vous avez maintenant une installation de Haskell en état de ma
### 10.9
### 10.9
Installez l'app [GHC pour Mac OS X](http://ghcformacosx.github.io/) qui inclue
Installez l'app [GHC pour Mac OS X](http://ghcformacosx.github.io/) qui inclus
GHC et Cabal. Elle vous indiquera comment ajouter GHC et cabal à votre path
GHC et Cabal. Elle vous indiquera comment ajouter GHC et cabal à votre path
après que vous ayez déposé le `.app` quelquepart.
après que vous ayez déposé le `.app` quelquepart.
### 10.6-10.8
### 10.6-10.8
Faites l'installation décrite ci-dessous avec cette [archive](https://www.haskell.org/platform/download/2014.2.0.0/ghc-7.8.3-x86_64-apple-darwin-r3.tar.bz2).
Faites l'installation décrite ci-dessus avec cette [archive](https://www.haskell.org/platform/download/2014.2.0.0/ghc-7.8.3-x86_64-apple-darwin-r3.tar.bz2).
## Windows
## Windows
@ -233,9 +233,9 @@ programme cherchera à s'installer dans votre répertoire Program Files.
### Guide d'installation détaillé pour Mac OS X
### Guide d'installation détaillé pour Mac OS X
Vous n'avez pas besoin de cela si vous utilisez le `.app` mais si cela ne
Vous n'en avez pas besoin si vous utilisez le `.app` mais si cela ne
C'est la version en ligne du cours de [Bryan O'Sullivan](https://github.com/bos)
C'est la version en ligne du cours de [Bryan O'Sullivan](https://github.com/bos)
enseigné à Stanford. Si vous ne savez qui il est, jetez un coup d'oeil à la moitié
enseigné à Stanford. Si vous ne savez qui il est, jetez un coup d'oeil à la moitié
des libraries utilisées par les applications Haskell, son nom est dessus. A souligner
des libraries utilisées par les applications Haskell, son nom y figure. A regarder de
si vous avez déjà fait le cours de Yorgey les modules sur les
plus pret, si vous avez déjà fait le cours de Yorgey, les modules sur les
types fantomes, les controles des flux d'informations, les extensions de language,
types fantomes, les controles des flux d'informations, les extensions de language,
la concurrence, les pipes, et les lenses.
la concurrence, les pipes, et les lenses.
@ -303,12 +303,12 @@ Un [article](http://www.haskellforall.com/2014/10/how-to-desugar-haskell-code.ht
### Pour comprendre list et fold
### Pour comprendre list et fold
- [Expliquez vous List et Folds](http://vimeo.com/64673035)
- [Comprendre List et Folds](http://vimeo.com/64673035)
### Pour apprendre quelques typeclasses courantes
### Pour apprendre quelques typeclasses courantes
Utile pour comprendre `Functor`, `Applicative`, `Monad`, `Monoid` et autres
Utile pour comprendre `Functor`, `Applicative`, `Monad`, `Monoid` et autres
typeclasses en general mais aussi une peu de théorie des catégories spécifique
typeclasses en général mais aussi un peu de théorie des catégories spécifique
à Haskell:
à Haskell:
- La [Typeclassopedia](http://www.haskell.org/haskellwiki/Typeclassopedia)
- La [Typeclassopedia](http://www.haskell.org/haskellwiki/Typeclassopedia)
@ -333,8 +333,8 @@ vous n'accrochez pas immédiatement à celle ci.
- Question sur SO : '[Haskell a-t-il une évaluation paresseuse ?](http://stackoverflow.com/questions/13042353/does-haskell-have-tail-recursive-optimization)'
- Question sur SO : '[Haskell a-t-il une évaluation paresseuse ?](http://stackoverflow.com/questions/13042353/does-haskell-have-tail-recursive-optimization)'
- les slides de [Johan Tibell](https://github.com/tibbe) pour une présentation
- les slides de [Johan Tibell](https://github.com/tibbe) tirés d'une présentation
intitulé [raisoner avec l'évaluation paresseuse](http://www.slideshare.net/tibbe/reasoning-about-laziness).
intitulée [raisoner avec l'évaluation paresseuse](http://www.slideshare.net/tibbe/reasoning-about-laziness).
## Brève démonstration
## Brève démonstration
@ -353,14 +353,14 @@ let a = 1 * a -- not guarded, (*) is strict
# IO
# IO
- [Ordre d'évaluation et State tokens](https://www.fpcomplete.com/user/snoyberg/general-haskell/advanced/evaluation-order-and-state-tokens)
- [Ordre d'évaluation et jetons d'états](https://www.fpcomplete.com/user/snoyberg/general-haskell/advanced/evaluation-order-and-state-tokens)
- [Révéler les mytères de la monade IO](http://blog.ezyang.com/2011/05/unraveling-the-mystery-of-the-io-monad/).
- [Révéler les mytères de la monade IO](http://blog.ezyang.com/2011/05/unraveling-the-mystery-of-the-io-monad/).
- ["instructions" du premier ordre](http://blog.jle.im/entry/first-class-statements).
- ["instructions" du premier ordre](http://blog.jle.im/entry/first-class-statements).
- [Haddocks pour System.IO.Unsafe.unsafePerformIO](http://hackage.haskell.org/package/base-4.7.0.1/docs/System-IO-Unsafe.html#v:unsafePerformIO)
- [Haddocks pour System.IO.Unsafe.unsafePerformIO](http://hackage.haskell.org/package/base-4.7.0.1/docs/System-IO-Unsafe.html#v:unsafePerformIO)
Lire la documentation et remarquez l'implémentation de `unsafeDupablePerformIO`
Lisez la documentation et remarquez l'implémentation de `unsafeDupablePerformIO`
Commentaire sur un fil Reddit de `glaebhoerl` :
Commentaire sur un fil Reddit de `glaebhoerl` :
@ -369,7 +369,7 @@ Commentaire sur un fil Reddit de `glaebhoerl` :
> être utilisé linéairement (il ne doit pas être dupliqué ou abandonné), mais
> être utilisé linéairement (il ne doit pas être dupliqué ou abandonné), mais
> son système de types ne peut l'imposer. Clean, un autre langage paresseux
> son système de types ne peut l'imposer. Clean, un autre langage paresseux
> à la Haskell, a des types uniques (qui sont des types linéaires et qui sont
> à la Haskell, a des types uniques (qui sont des types linéaires et qui sont
> peut être différent sur d'autre points que j0ignore). Ils exposent le passage
> peut être différents sur d'autre points que j'ignore). Ils exposent le passage
> du Monde explicitement et proposent une monade IO (non-abstraite) uniquement
> du Monde explicitement et proposent une monade IO (non-abstraite) uniquement
> pour plus de commodités.
> pour plus de commodités.
@ -385,18 +385,18 @@ expressions en utilisant le papier sur les
[transformateurs de monades étape par étape](http://www.cs.virginia.edu/~wh5a/personal/Transformers.pdf)
[transformateurs de monades étape par étape](http://www.cs.virginia.edu/~wh5a/personal/Transformers.pdf)
(mentioné dans la section "transformateurs de monades" ci-dessous).
(mentioné dans la section "transformateurs de monades" ci-dessous).
Ecrire plusieurs interpréteurs en changeant juste la monde pour changer les
Ecrire plusieurs interpréteurs en changeant juste le Monde pour changer les
sémantiques peut aider à comprendre ce qui se passe.
sémantiques peut aider à comprendre ce qui se passe.
- [Cette présentation](https://vimeo.com/73648150) de Tony justifie avec brio
- [Cette présentation](https://vimeo.com/73648150) de Tony justifie avec brio
l'utilité des transformateurs de monades. Les slides sont également
l'utilité des transformateurs de monades. Les slides sont également
# Test, specification, test de propriétés (tests par génération)
# Test, spécifications, tests de propriétés (tests par génération)
- Ce [tutoriel](https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/en/tutorial.md)
- Ce [tutoriel](https://github.com/kazu-yamamoto/unit-test-example/blob/master/markdown/en/tutorial.md)
de Kazu Yamamoto est fantastique.
de Kazu Yamamoto est fantastique.
@ -448,7 +448,7 @@ Disponible sur [hackage](https://hackage.haskell.org/package/aeson) et
- Le [package graphs](https://hackage.haskell.org/package/graphs).
- Le [package graphs](https://hackage.haskell.org/package/graphs).
- [une question Stack Overflow sur PHOAS](http://stackoverflow.com/questions/24369954/separate-positive-and-negative-occurrences-of-phoas-variables-in-presence-of-rec)
- [une question SO sur PHOAS](http://stackoverflow.com/questions/24369954/separate-positive-and-negative-occurrences-of-phoas-variables-in-presence-of-rec)
- [un article sur PHOAS](https://www.fpcomplete.com/user/edwardk/phoas).
- [un article sur PHOAS](https://www.fpcomplete.com/user/edwardk/phoas).
@ -488,11 +488,11 @@ Disponible sur [hackage](https://hackage.haskell.org/package/aeson) et
## Une FAQ fantastique
## Une FAQ fantastique
En plus d'être un guide extraordinaire pour pleins de sujets comme les GADT,
En plus d'être un guide extraordinaire sur pleins de sujets comme les GADT,
il couvre aussi des some useful basics for Cabal
il couvre aussi des bases utiles de Cabal.
- [Ce que j'aurais aimé savoir lors de mon apprentissage d'Haskell](http://dev.stephendiehl.com/hask/)
- [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).
aussi disponible sur github [ici](https://github.com/sdiehl/wiwinwlh).
## recommandations pour Cabal
## recommandations pour Cabal
@ -528,7 +528,7 @@ Pour les utilisateurs (de Yesod généralement) qui ont des problèmes de build,