Introduction
Je ne développe pas en Haskell mais je regarde beaucoup. La série que j’écris sur la programmation fonctionnelle me force à regarder le langage de plus près. Le monde haskell s’est enrichi d’un nouvel outil Stack.
Stack et Haskell
Stack est un logiciel qui gère l’installation/les packages/la création/le build/les tests d’un projet Haskell.
Il a plusieurs avantages:
- Il a été pensé pour automatiser le build.
- Il a une ligne de commande sympathique que nous allons voir par la suite.
- Il utilise un fichier
stack.yml
c’est l’équivalent d’uncomposer.json
en php ou unpackage.json
en node. - Tout est installé dans le
~/.stack
tout les programmes sont isolés et n’interfèrent pas avec les autres logiciels déjà pré installés.
Mise en place.
Il suffit d’ajouter les clés/et le dépôt sous ubuntu : voir la documentation Une fois que le logiciel est installé
Etape 1 : structure d’un projet.
1
|
|
crée une arborescence toute faite
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
A noter qu’il existe des templates d’applications (Un peu comme Yeoman)
Par exemple pour créer une application Yesod (Pour faire un serveur web) et Mysql
1
|
|
Pour lister les différents templates
1 2 3 4 5 6 7 8 9 10 11 |
|
Etape 2 : Installation des librairies
1 2 |
|
Si Haskell n’est pas encore installé dans ~/.stack
, le logiciel s’occupe de tout, il installe aussi toutes les dépendances.
Etape 3 : build et compilation
1
|
|
Le haskell est un language compilé. Le logiciel compile tout le projet.
Etape 4 : Lancer le programme
Pour lancer le programme
1
|
|
Pour lancer les tests. Tout les projets viennents avec des tests
1
|
|
Etape 5 : Installer le programme
un peu comme un make install
1
|
|
Etape 6 : Docker
Docker c’est cool et pratique.
dans le stack.yml
1 2 3 4 5 6 7 8 9 10 11 |
|
Si l’image de base existe déjà
Alors
1
|
|
Cela génère le container.
Il ne reste plus qu’à lancer le container
1
|
|
Listes de commandes
stack new nom-du-projet nom-du-template
crée un nouveau projetstack setup
mise en place du projetstack build
compile le projetstack exec nom-du-programme
lance le programmestack repl
Lance le mode interactifstack test
Lance les testsstack install
installe le programme.stack templates
liste tout les templates.
Conclusion
Je me mets au Haskell. C’est assez passionnant. Le langage n’est pas simple (je me casse un peu les dents dessus). Je suis pour l’instant juste sur les premiers problèmes de codewars. J’espère faire des post sur haskell par la suite. Il y a déja plein de tutoriels.