Skip to content

cover

À propos de ce livre

Ce livre traite du paradigme fonctionnel en général. Nous utiliserons le langage de programmation fonctionnel le plus populaire au monde : JavaScript. Certains pourraient penser qu'il s'agit d'un choix médiocre car il va à l'encontre de la culture actuelle qui reste majoritairement impérative. Cependant, je crois que c'est la meilleure façon d'apprendre la programmation fonctionnelle (FP) pour plusieurs raisons :

  • Vous l'utilisez probablement quotidiennement au travail.

Cela permet de pratiquer et d'appliquer vos connaissances acquises chaque jour sur des programmes réels, plutôt que sur des projets personnels le soir ou le week-end avec un langage FP ésotérique.

  • Pas besoin de tout apprendre d'un coup pour écrire des programmes.

Dans un langage fonctionnel pur, on ne peut pas logger une variable ni lire un nœud DOM sans utiliser de monades. Ici, nous pouvons tricher un peu tout en apprenant à purifier notre base de code. C'est aussi plus facile de démarrer avec JavaScript car c'est un langage multi-paradigme : vous pouvez revenir à vos habitudes actuelles pendant que subsistent des lacunes dans vos connaissances.

  • Le langage est parfaitement capable d'écrire du code fonctionnel de premier ordre.

Nous avons toutes les fonctionnalités nécessaires pour imiter des langages comme Scala ou Haskell avec l'aide d'une ou deux petites bibliothèques. La programmation orientée objet domine actuellement l'industrie, mais elle est clairement maladroite en JavaScript. C'est comme planter une tente sur le périphérique ou danser les claquettes avec des bottes en caoutchouc. Nous devons utiliser bind partout pour éviter que this ne change subrepticement, nous contournons les comportements erratiques quand le mot-clé new est oublié, les membres privés ne sont disponibles que via des fermetures. Pour beaucoup d'entre nous, la FP semble plus naturelle de toute façon.

Cela dit, les langages fonctionnels typés resteront sans aucun doute le meilleur choix pour coder dans le style présenté ici. JavaScript servira de tremplin pédagogique - à vous de voir où appliquer ces concepts. Heureusement, les interfaces étant mathématiques, elles sont omniprésentes. Vous vous sentirez chez vous avec Swiftz, Scalaz, Haskell, PureScript et autres environnements à approche mathématique.

Lire en ligne

Pour une meilleure expérience de lecture, consultez la version en ligne sur Gitbook.

  • Barre latérale d'accès rapide
  • Exercices dans le navigateur
  • Exemples approfondis

Expérimentez avec le code

Pour rendre l'apprentissage efficace et pour ne pas vous ennuyer pendant mes explications, expérimentez activement avec les concepts présentés. Certains peuvent être délicats au début et nécessitent de se salir les mains pour être compris. Toutes les fonctions et structures de données algébriques du livre sont rassemblées en annexe. Le code correspondant est disponible sous forme de module npm :

bash
$ npm i @mostly-adequate/support

Alternativement, les exercices de chaque chapitre sont exécutables directement dans votre éditeur ! Par exemple, complétez le fichier exercise_*.js dans exercises/ch04 puis exécutez :

bash
$ npm run ch04

Télécharger

Trouvez les versions pré-générées PDF et EPUB dans les artefacts de build de la dernière release.

Génération manuelle

⚠️ La configuration du projet étant un peu ancienne, vous pourriez rencontrer des problèmes lors de la compilation locale. Nous recommandons d'utiliser Node v10.22.1 et la dernière version de Calibre si possible.

À propos de la version de Node.js

La version recommandée de Node (v10.22.1) étant désormais ancienne, il est probable qu'elle ne soit pas installée sur votre système. Vous pouvez gérer plusieurs versions de Node à l'aide de nvm. Consultez la documentation d'installation, puis exécutez :

  • Installez toute version nécessaire :
nvm install 10.22.1
nvm install 20.2.0
  • Changez de version au besoin :
nvm use 10.22.1
node -v // will show v10.22.1 
nvm use 20.2.0
node -v // will show v20.2.0

Ce projet contenant un fichier .nvmrc, utilisez simplement ces commandes :

// being anywhere inside this project
nvm install
node -v // will show v10.22.1

Séquence de commandes complète

En suivant les étapes d'installation de nvm, voici la procédure complète pour générer les fichiers PDF/EPUB :

git clone https://github.com/MostlyAdequate/mostly-adequate-guide.git
cd mostly-adequate-guide/
nvm install
npm install
npm run setup
npm run generate-pdf
npm run generate-epub

Note : Pour générer les ebooks, installez ebook-convert. Instructions d'installation.

Table des matières

Voir SUMMARY.md

Contributions

Voir CONTRIBUTING.md

Traductions

Voir TRANSLATIONS.md

FAQ

Voir FAQ.md

Planification future

  • Partie 1 (chapitres 1-7) couvre les bases. Des mises à jour sont faites lors de corrections, ceci étant une première ébauche. N'hésitez pas à contribuer !
  • Partie 2 (chapitres 8-13) aborde les classes de types comme les foncteurs et monades jusqu'aux traversables. L'objectif est d'y inclure les transformateurs et une application pure.
  • Partie 3 (chapitres 14+) explorera la frontière entre programmation pratique et absurdité académique. Nous étudierons les comonades, f-algèbres, monades libres, yoneda et autres constructions catégorielles.

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.