
Apprendre la programmation fonctionnelle avec Kotlin
Description
Introduction au livre
Utilisation du langage de nouvelle génération Kotlin
Concevez un code fonctionnel utilisable dans des situations réelles !
Ce livre explique fidèlement des concepts fonctionnels, qui peuvent être perçus comme difficiles, afin qu'ils deviennent des connaissances applicables dans la vie réelle.
Il propose une variété d'exemples exemplaires et de problèmes d'application pratiques qui vous permettent d'appliquer immédiatement ce que vous avez appris, vous permettant ainsi d'acquérir des compétences en programmation fonctionnelle.
Ce livre traite de la programmation fonctionnelle en utilisant Kotlin, un langage multi-paradigme.
Par conséquent, il aborde également les stratégies d'essais et d'erreurs ainsi que les solutions de contournement lors de la programmation fonctionnelle dans un langage qui n'est pas purement fonctionnel, ce qui sera d'une grande aide pratique étant donné que les langages purement fonctionnels sont rarement utilisés en pratique.
Kotlin est conçu pour prendre en charge la programmation orientée objet ainsi que les fonctionnalités fonctionnelles ; nous avons donc comparé des exemples impératifs, orientés objet et fonctionnels selon les besoins.
De plus, sa structure vous permet d'aller au-delà de la simple utilisation des fonctionnalités offertes par le langage et de créer des fonctions d'ordre supérieur, des structures de données fonctionnelles, des types, etc., afin de pouvoir atteindre le niveau nécessaire pour créer et fournir une bibliothèque fonctionnelle.
Concevez un code fonctionnel utilisable dans des situations réelles !
Ce livre explique fidèlement des concepts fonctionnels, qui peuvent être perçus comme difficiles, afin qu'ils deviennent des connaissances applicables dans la vie réelle.
Il propose une variété d'exemples exemplaires et de problèmes d'application pratiques qui vous permettent d'appliquer immédiatement ce que vous avez appris, vous permettant ainsi d'acquérir des compétences en programmation fonctionnelle.
Ce livre traite de la programmation fonctionnelle en utilisant Kotlin, un langage multi-paradigme.
Par conséquent, il aborde également les stratégies d'essais et d'erreurs ainsi que les solutions de contournement lors de la programmation fonctionnelle dans un langage qui n'est pas purement fonctionnel, ce qui sera d'une grande aide pratique étant donné que les langages purement fonctionnels sont rarement utilisés en pratique.
Kotlin est conçu pour prendre en charge la programmation orientée objet ainsi que les fonctionnalités fonctionnelles ; nous avons donc comparé des exemples impératifs, orientés objet et fonctionnels selon les besoins.
De plus, sa structure vous permet d'aller au-delà de la simple utilisation des fonctionnalités offertes par le langage et de créer des fonctions d'ordre supérieur, des structures de données fonctionnelles, des types, etc., afin de pouvoir atteindre le niveau nécessaire pour créer et fournir une bibliothèque fonctionnelle.
indice
Chapitre 1 Qu'est-ce que la programmation fonctionnelle ?
1.1 Caractéristiques de la programmation fonctionnelle
1.2 Qu'est-ce qu'une fonction pure ?
Même entrée, même sortie
Code sans effets secondaires
____Les effets des fonctions pures et autres considérations
1.3 Écrire un programme sans effets secondaires
____Effets secondaires de la modification des variables partagées
Effets secondaires dus aux changements d'état des objets
1.4 Rendre les programmes plus sûrs grâce à la transparence référentielle
Fonction de référence non transparente
Fonction de référence transparente
1.5 Qu'est-ce qu'une fonction de première classe ?
objet de première classe
fonction de première classe
1.6 Accroître l'abstraction et la réutilisabilité grâce aux fonctions de première classe
Exemple simple de calculatrice
____Un exemple de calculatrice améliorée orientée objet
Exemple de calculatrice améliorée grâce à la programmation fonctionnelle
1.7 Création d'une structure de données infinie avec évaluation paresseuse
Stocker des valeurs infinies dans une structure de données
1.8 En conclusion
____Premiers pas avec la programmation fonctionnelle en Kotlin
Chapitre 2
2.1 Déclaration de propriété et gestion des valeurs nulles en cas de sinistre
Déclaration de propriété
Traitement sûr des valeurs nulles
2.2 Fonctions et lambdas
____Différentes façons de déclarer une fonction
Définition des valeurs par défaut pour les paramètres ____
Fonctions anonymes et expressions lambda
fonction d'extension ____
2.3 Instructions de contrôle
instruction ____if
____lorsque l'énoncé
____pour déclaration
2.4 Interface
Caractéristiques de l'interface ____
Déclarer et hériter d'une interface ____
____Déclarer des fonctions abstraites dans une interface
Implémentation d'une fonction abstraite
____Déclaration et utilisation des propriétés abstraites
classe 2.5
classes et propriétés
classe de données ____
classe d'énumération ____
classe scellée
2.6 Correspondance des motifs
____Comment définir différents modèles
Correspondance de modèles basée sur les conditions ____
____Limites de la correspondance de modèles Kotlin
2.7 Décomposition d'objets
Collection 2.8
listes et ensembles
____carte
2.9 Génériques
Déclaration de fonction générique
Bibliothèque standard Kotlin 2.10
____let fonction
____avec fonction
____fonction d'exécution
____appliquer la fonction
____fonction également
Comparaison des fonctions ____let, with, run, apply et also
____utiliser la fonction
2.11 Transformation
Signification et exemples d'____invariance
Signification et exemples de ____covariance
____Signification et exemples de contravariance
Déclarez la transformation comme ____entrée, sortie
2.12 En conclusion
Chapitre 3 Récursivité
3.1 La signification de la récursivité en programmation fonctionnelle
Un exemple d'implémentation de la suite de Fibonacci à l'aide de la programmation impérative
____Un exemple d'implémentation récursive de la suite de Fibonacci
____La récursivité en programmation fonctionnelle
3.2 Comment concevoir la récursivité
____Comment concevoir une fonction récursive
Observez le déroulement de la récursivité.
Implémentation de code à l'aide de la méthode de conception de fonctions récursives
3.3 Se familiariser avec la récursivité
Exemple de fonction inverse
____prenons un exemple de fonction
Exemple de fonction ____repeat
Exemple de fonction zip
3.4 Amélioration des performances grâce à la mémoïsation
Exemple de suite de Fibonacci récursive
Exemple de suite de Fibonacci utilisant la mémoïsation
____Résoudre le problème de la récursivité de manière fonctionnelle
3.5 Optimisation par récursivité terminale
____Qu'est-ce que l'optimisation par récursion terminale ?
Réécrivez la fonction ____maximum sous forme récursive terminale.
Réécrivez la fonction ____reverse sous forme de récursion terminale.
Réécrivez la fonction ____take comme récursive terminale.
Réécriture de la fonction ____zip sous forme récursive terminale
3.6 Optimisation de la récursivité mutuelle avec récursivité terminale
____récursivité mutuelle
____trampoline
3.7 Applications pratiques
Fonction pour trouver l'ensemble des parties de ____
3.8 En conclusion
Chapitre 4 Fonctions d'ordre supérieur
4.1 Qu'est-ce qu'une fonction d'ordre supérieur ?
____Exemple de satisfaction des conditions de fonction d'ordre supérieur
____Accroît la réutilisabilité du code
Il est facile d'étendre la fonction
Vous pouvez écrire un code concis
4.2 Fonctions partielles
Exemple de fonction partielle ____
Création d'une fonction partielle ____
Le besoin de fonctions partielles
4.3 Fonction d'application partielle
4.4 Fonctions de curry
____Abstraction des fonctions de curryfication pour Kotlin
4.5 Fonctions de composition
Composition de fonctions généralisée
Programmation libre à ____ points
____Composition de fonctions prenant un ou plusieurs paramètres
4.6 Applications pratiques
____zipAvec fonction
____Remplacer les écouteurs de rappel par des fonctions d'ordre supérieur
4.7 En conclusion
Chapitre 5 : Gestion des données avec les collections
5.1 Traitement des données dans les collections fonctionnelles
Création d'une structure de données de liste simple
Créez une fonction ____addHead
Création de la fonction ____appendTail
Complexité temporelle de la fonction appendTail écrite en utilisant la récursivité terminale
Créez une fonction ____getTail
5.2 Filtrage des données de collecte
____Impératif vs.
Approche fonctionnelle
Créez une fonction de filtre ____
5.3 Modification des données de collecte
____Impératif vs.
Approche fonctionnelle
Création d'une fonction de mappage ____
5.4 Réduction progressive des données collectées
Créez une fonction ____foldLeft
Utilisation de la fonction ____foldLeft
Écrire la fonction toUpper en utilisant la fonction ____foldLeft
Créez une fonction ____foldRight
____foldLeft vs.
plier à droite
5.5 Fusion de données provenant de plusieurs collections
Création d'une fonction ____zipWith
5.6 Comparaison des approches impérative et fonctionnelle à l'aide des listes Kotlin
Comparaison des caractéristiques des approches impératives et fonctionnelles
Comparaison des performances des méthodes impératives et fonctionnelles
5.7 Collection Lazy FunStream
____Liste amusante vs.
Comparaison des méthodes de déclaration FunStream
____Liste amusante vs.
Comparaison des performances de FunStream
____Créer des valeurs infinies avec FunStream
5.8 Applications pratiques
Ajoutez la fonction printFunList à ____FunList
5.9 En conclusion
Chapitre 6 Système de types fonctionnels
6.1 Système de types
Types et caractéristiques des systèmes de type ____
Système de typage statique des langues fonctionnelles
6.2 Types de données algébriques
Exemples et limites du type de produit ____
OU combinaison utilisant le type de somme ____
Types de données algébriques en programmation fonctionnelle
6.3 Composants de type
variable de type ____
constructeur de valeur ____
constructeur de type ____ et paramètres de type
6.4 Définition des types par les comportements
____Interface vs.
Caractéristique vs.
Classe abstraite vs.
mélange
Déclaration des classes de type ____ et des instances de classes de type
6.5 Structures de données récursives
6.6 Applications pratiques
____Avantages du type de somme algébrique
6.7 En conclusion
Chapitre 7 Foncteurs
7.1 Qu'est-ce qu'un foncteur ?
Déclarer un ____foncteur
7.2 Création d'un foncteur Peut-être
7.3 Création d'un foncteur d'arbre
7.4 Création d'un foncteur d'éther
7.5 Création d'un foncteur de fonction unaire
7.6 Loi du foncteur
Première loi du foncteur
Deuxième loi du foncteur
____Un exemple d'instance de foncteur qui ne satisfait pas aux lois des foncteurs
7.7 Applications pratiques
Application à une fonction avec un ou plusieurs paramètres ____
7.8 En conclusion
Chapitre 8 Foncteurs applicatifs
8.1 Qu'est-ce qu'un foncteur applicatif ?
____Définition d'un foncteur applicatif
Classe de type foncteur applicatif
8.2 Création d'un foncteur applicatif Maybe
____Essayons d'utiliser le foncteur applicatif peut-être
Style applicatif
Création d'un foncteur peut-être applicable à l'aide de fonctions d'extension
8.3 Création d'un foncteur applicatif arborescent
____Création d'un foncteur d'arbre général
____Extension avec des foncteurs applicatifs
8.4 Création d'un foncteur applicatif d'éther
8.5 La loi des foncteurs applicatifs
Loi sur l'identité
Loi sur la composition
____Loi de l'homomorphisme
Loi sur l'échange
La relation entre les foncteurs ____ et les foncteurs applicatifs
8.6 Applications pratiques
Créez une fonction ____liftA2
Créez une fonction ____sequenceA
8.7 En conclusion
Chapitre 9 Monoïde
9.1 Qu'est-ce qu'un monoïde ?
9.2 Classe de types monoïdes
Déclaration de classe de type monoïde simple
____La loi du monoïde
Création d'une fonction ____mconcat
9.3 Création d'un monoïde de possibilité
____Vérifier Peut-être Monoïde
9.4 Création d'une fonction foldMap pour un arbre binaire pliable
Fonction ____foldMap
____Créer un arbre binaire pliable
9.5 Applications pratiques
____Vérifier si une valeur spécifique existe dans un arbre binaire
Conversion d'un arbre binaire en liste à l'aide de ____foldMap
9.6 En conclusion
Chapitre 10 Monades
10.1 Classe de type Monade
10.2 Peut-être une monade
____Peut-être en utilisant des monades
10.3 Loi de la monade
Loi sur l'identité de gauche
droit à l'identité
loi d'associativité
Loi des monades du point de vue de la composition fonctionnelle
10.4 Monade IO
Un exemple où les opérations d'entrée/sortie ne sont pas séparées du monde extérieur
Exemple d'opérations d'entrée/sortie séparées du monde extérieur
10.5 Monade de liste
____Déclaration de la structure de base de FunList
____Création d'une fonction de création de liste et d'une fonction de sortie
____Établir une liste monoïde
Implémentation de la fonction ____fmap
Mise en œuvre des fonctions ____pure et apply
Implémentation de la fonction ____flatMap
10.6 Applications pratiques
Créez une liste ____
Créez une liste de tuples contenant toutes les combinaisons de deux listes.
Convertissez les caractères de la liste ____ en majuscules
Appliquer une fonction aux valeurs d'une liste ____
____Supprimer les caractères en double
____Éléments de la liste inversée
10.7 En conclusion
Chapitre 11 : Journalisation, gestion des exceptions, tests et débogage
11.1 Connexion à la programmation fonctionnelle
Connexion en programmation impérative
____Connexion en programmation fonctionnelle
Amélioration grâce aux fonctions d'extension
Création d'une monade d'écrivain
11.2 Gestion des exceptions en programmation fonctionnelle
Gestion des exceptions utilisant une valeur nulle ou -1
Gestion des exceptions à l'aide de la monade ____Maybe
Gestion des exceptions à l'aide de la monade Ether
Gestion des exceptions à l'aide de la monade ____tri
11.3 Tests en programmation fonctionnelle
____Créer du code testable
____Test des fonctions pures
____Test des fonctions avec effets secondaires
11.4 Débogage en programmation fonctionnelle
Conseils et outils de débogage
Débogage des chaînes de listes avec IntelliJ
Débogage des chaînes de séquences à l'aide d'IntelliJ
11.5 En conclusion
1.1 Caractéristiques de la programmation fonctionnelle
1.2 Qu'est-ce qu'une fonction pure ?
Même entrée, même sortie
Code sans effets secondaires
____Les effets des fonctions pures et autres considérations
1.3 Écrire un programme sans effets secondaires
____Effets secondaires de la modification des variables partagées
Effets secondaires dus aux changements d'état des objets
1.4 Rendre les programmes plus sûrs grâce à la transparence référentielle
Fonction de référence non transparente
Fonction de référence transparente
1.5 Qu'est-ce qu'une fonction de première classe ?
objet de première classe
fonction de première classe
1.6 Accroître l'abstraction et la réutilisabilité grâce aux fonctions de première classe
Exemple simple de calculatrice
____Un exemple de calculatrice améliorée orientée objet
Exemple de calculatrice améliorée grâce à la programmation fonctionnelle
1.7 Création d'une structure de données infinie avec évaluation paresseuse
Stocker des valeurs infinies dans une structure de données
1.8 En conclusion
____Premiers pas avec la programmation fonctionnelle en Kotlin
Chapitre 2
2.1 Déclaration de propriété et gestion des valeurs nulles en cas de sinistre
Déclaration de propriété
Traitement sûr des valeurs nulles
2.2 Fonctions et lambdas
____Différentes façons de déclarer une fonction
Définition des valeurs par défaut pour les paramètres ____
Fonctions anonymes et expressions lambda
fonction d'extension ____
2.3 Instructions de contrôle
instruction ____if
____lorsque l'énoncé
____pour déclaration
2.4 Interface
Caractéristiques de l'interface ____
Déclarer et hériter d'une interface ____
____Déclarer des fonctions abstraites dans une interface
Implémentation d'une fonction abstraite
____Déclaration et utilisation des propriétés abstraites
classe 2.5
classes et propriétés
classe de données ____
classe d'énumération ____
classe scellée
2.6 Correspondance des motifs
____Comment définir différents modèles
Correspondance de modèles basée sur les conditions ____
____Limites de la correspondance de modèles Kotlin
2.7 Décomposition d'objets
Collection 2.8
listes et ensembles
____carte
2.9 Génériques
Déclaration de fonction générique
Bibliothèque standard Kotlin 2.10
____let fonction
____avec fonction
____fonction d'exécution
____appliquer la fonction
____fonction également
Comparaison des fonctions ____let, with, run, apply et also
____utiliser la fonction
2.11 Transformation
Signification et exemples d'____invariance
Signification et exemples de ____covariance
____Signification et exemples de contravariance
Déclarez la transformation comme ____entrée, sortie
2.12 En conclusion
Chapitre 3 Récursivité
3.1 La signification de la récursivité en programmation fonctionnelle
Un exemple d'implémentation de la suite de Fibonacci à l'aide de la programmation impérative
____Un exemple d'implémentation récursive de la suite de Fibonacci
____La récursivité en programmation fonctionnelle
3.2 Comment concevoir la récursivité
____Comment concevoir une fonction récursive
Observez le déroulement de la récursivité.
Implémentation de code à l'aide de la méthode de conception de fonctions récursives
3.3 Se familiariser avec la récursivité
Exemple de fonction inverse
____prenons un exemple de fonction
Exemple de fonction ____repeat
Exemple de fonction zip
3.4 Amélioration des performances grâce à la mémoïsation
Exemple de suite de Fibonacci récursive
Exemple de suite de Fibonacci utilisant la mémoïsation
____Résoudre le problème de la récursivité de manière fonctionnelle
3.5 Optimisation par récursivité terminale
____Qu'est-ce que l'optimisation par récursion terminale ?
Réécrivez la fonction ____maximum sous forme récursive terminale.
Réécrivez la fonction ____reverse sous forme de récursion terminale.
Réécrivez la fonction ____take comme récursive terminale.
Réécriture de la fonction ____zip sous forme récursive terminale
3.6 Optimisation de la récursivité mutuelle avec récursivité terminale
____récursivité mutuelle
____trampoline
3.7 Applications pratiques
Fonction pour trouver l'ensemble des parties de ____
3.8 En conclusion
Chapitre 4 Fonctions d'ordre supérieur
4.1 Qu'est-ce qu'une fonction d'ordre supérieur ?
____Exemple de satisfaction des conditions de fonction d'ordre supérieur
____Accroît la réutilisabilité du code
Il est facile d'étendre la fonction
Vous pouvez écrire un code concis
4.2 Fonctions partielles
Exemple de fonction partielle ____
Création d'une fonction partielle ____
Le besoin de fonctions partielles
4.3 Fonction d'application partielle
4.4 Fonctions de curry
____Abstraction des fonctions de curryfication pour Kotlin
4.5 Fonctions de composition
Composition de fonctions généralisée
Programmation libre à ____ points
____Composition de fonctions prenant un ou plusieurs paramètres
4.6 Applications pratiques
____zipAvec fonction
____Remplacer les écouteurs de rappel par des fonctions d'ordre supérieur
4.7 En conclusion
Chapitre 5 : Gestion des données avec les collections
5.1 Traitement des données dans les collections fonctionnelles
Création d'une structure de données de liste simple
Créez une fonction ____addHead
Création de la fonction ____appendTail
Complexité temporelle de la fonction appendTail écrite en utilisant la récursivité terminale
Créez une fonction ____getTail
5.2 Filtrage des données de collecte
____Impératif vs.
Approche fonctionnelle
Créez une fonction de filtre ____
5.3 Modification des données de collecte
____Impératif vs.
Approche fonctionnelle
Création d'une fonction de mappage ____
5.4 Réduction progressive des données collectées
Créez une fonction ____foldLeft
Utilisation de la fonction ____foldLeft
Écrire la fonction toUpper en utilisant la fonction ____foldLeft
Créez une fonction ____foldRight
____foldLeft vs.
plier à droite
5.5 Fusion de données provenant de plusieurs collections
Création d'une fonction ____zipWith
5.6 Comparaison des approches impérative et fonctionnelle à l'aide des listes Kotlin
Comparaison des caractéristiques des approches impératives et fonctionnelles
Comparaison des performances des méthodes impératives et fonctionnelles
5.7 Collection Lazy FunStream
____Liste amusante vs.
Comparaison des méthodes de déclaration FunStream
____Liste amusante vs.
Comparaison des performances de FunStream
____Créer des valeurs infinies avec FunStream
5.8 Applications pratiques
Ajoutez la fonction printFunList à ____FunList
5.9 En conclusion
Chapitre 6 Système de types fonctionnels
6.1 Système de types
Types et caractéristiques des systèmes de type ____
Système de typage statique des langues fonctionnelles
6.2 Types de données algébriques
Exemples et limites du type de produit ____
OU combinaison utilisant le type de somme ____
Types de données algébriques en programmation fonctionnelle
6.3 Composants de type
variable de type ____
constructeur de valeur ____
constructeur de type ____ et paramètres de type
6.4 Définition des types par les comportements
____Interface vs.
Caractéristique vs.
Classe abstraite vs.
mélange
Déclaration des classes de type ____ et des instances de classes de type
6.5 Structures de données récursives
6.6 Applications pratiques
____Avantages du type de somme algébrique
6.7 En conclusion
Chapitre 7 Foncteurs
7.1 Qu'est-ce qu'un foncteur ?
Déclarer un ____foncteur
7.2 Création d'un foncteur Peut-être
7.3 Création d'un foncteur d'arbre
7.4 Création d'un foncteur d'éther
7.5 Création d'un foncteur de fonction unaire
7.6 Loi du foncteur
Première loi du foncteur
Deuxième loi du foncteur
____Un exemple d'instance de foncteur qui ne satisfait pas aux lois des foncteurs
7.7 Applications pratiques
Application à une fonction avec un ou plusieurs paramètres ____
7.8 En conclusion
Chapitre 8 Foncteurs applicatifs
8.1 Qu'est-ce qu'un foncteur applicatif ?
____Définition d'un foncteur applicatif
Classe de type foncteur applicatif
8.2 Création d'un foncteur applicatif Maybe
____Essayons d'utiliser le foncteur applicatif peut-être
Style applicatif
Création d'un foncteur peut-être applicable à l'aide de fonctions d'extension
8.3 Création d'un foncteur applicatif arborescent
____Création d'un foncteur d'arbre général
____Extension avec des foncteurs applicatifs
8.4 Création d'un foncteur applicatif d'éther
8.5 La loi des foncteurs applicatifs
Loi sur l'identité
Loi sur la composition
____Loi de l'homomorphisme
Loi sur l'échange
La relation entre les foncteurs ____ et les foncteurs applicatifs
8.6 Applications pratiques
Créez une fonction ____liftA2
Créez une fonction ____sequenceA
8.7 En conclusion
Chapitre 9 Monoïde
9.1 Qu'est-ce qu'un monoïde ?
9.2 Classe de types monoïdes
Déclaration de classe de type monoïde simple
____La loi du monoïde
Création d'une fonction ____mconcat
9.3 Création d'un monoïde de possibilité
____Vérifier Peut-être Monoïde
9.4 Création d'une fonction foldMap pour un arbre binaire pliable
Fonction ____foldMap
____Créer un arbre binaire pliable
9.5 Applications pratiques
____Vérifier si une valeur spécifique existe dans un arbre binaire
Conversion d'un arbre binaire en liste à l'aide de ____foldMap
9.6 En conclusion
Chapitre 10 Monades
10.1 Classe de type Monade
10.2 Peut-être une monade
____Peut-être en utilisant des monades
10.3 Loi de la monade
Loi sur l'identité de gauche
droit à l'identité
loi d'associativité
Loi des monades du point de vue de la composition fonctionnelle
10.4 Monade IO
Un exemple où les opérations d'entrée/sortie ne sont pas séparées du monde extérieur
Exemple d'opérations d'entrée/sortie séparées du monde extérieur
10.5 Monade de liste
____Déclaration de la structure de base de FunList
____Création d'une fonction de création de liste et d'une fonction de sortie
____Établir une liste monoïde
Implémentation de la fonction ____fmap
Mise en œuvre des fonctions ____pure et apply
Implémentation de la fonction ____flatMap
10.6 Applications pratiques
Créez une liste ____
Créez une liste de tuples contenant toutes les combinaisons de deux listes.
Convertissez les caractères de la liste ____ en majuscules
Appliquer une fonction aux valeurs d'une liste ____
____Supprimer les caractères en double
____Éléments de la liste inversée
10.7 En conclusion
Chapitre 11 : Journalisation, gestion des exceptions, tests et débogage
11.1 Connexion à la programmation fonctionnelle
Connexion en programmation impérative
____Connexion en programmation fonctionnelle
Amélioration grâce aux fonctions d'extension
Création d'une monade d'écrivain
11.2 Gestion des exceptions en programmation fonctionnelle
Gestion des exceptions utilisant une valeur nulle ou -1
Gestion des exceptions à l'aide de la monade ____Maybe
Gestion des exceptions à l'aide de la monade Ether
Gestion des exceptions à l'aide de la monade ____tri
11.3 Tests en programmation fonctionnelle
____Créer du code testable
____Test des fonctions pures
____Test des fonctions avec effets secondaires
11.4 Débogage en programmation fonctionnelle
Conseils et outils de débogage
Débogage des chaînes de listes avec IntelliJ
Débogage des chaînes de séquences à l'aide d'IntelliJ
11.5 En conclusion
SPÉCIFICATIONS DES PRODUITS
- Date de publication : 20 décembre 2019
- Nombre de pages, poids, dimensions : 328 pages | 188 × 240 × 30 mm
- ISBN13 : 9788966262557
- ISBN10 : 8966262554
Vous aimerez peut-être aussi
카테고리
Langue coréenne
Langue coréenne