Le paradigme fonctionnel

Fonction pure et effet de bord, immutabilité, fonctions d'ordre supérieur (map, filter, reduce), composition, récursion à la place de la boucle et évaluation paresseuse : lire un programme écrit avec des fonctions et prévoir ce qu'il rend.

  • 30 cartes
  • 4 thèmes
  • Gratuit

Le programme, thème par thème

Le poids de chaque thème suit celui que lui donne l'examen.

  1. Notions
  2. Questions
  3. Ranger et relier
  4. Mises en situation

Quelques cartes du deck

  • Fonction pure : de quoi s'agit-il ?

    Voir la réponse

    Fonction dont le résultat ne dépend que de ses arguments et qui ne modifie rien en dehors d'elle : les mêmes arguments donnent toujours le même résultat.

    On peut la tester sans préparer d'environnement, la rappeler dans n'importe quel ordre et remplacer l'appel par sa valeur sans changer le programme.

  • Quelle valeur rend ce code JavaScript ?

    ```javascript
    [1, 2, 3, 4].filter(x => x % 2).map(x => x * 10).reduce((a, b) => a + b)
    `

    • 40
    • 60
    • 100
    • [10, 30]
    Voir la réponse

    40

    x % 2 vaut 1 pour les impairs : filter garde 1 et 3, map donne 10 et 30, reduce les additionne : 40. Les pairs donneraient 60, et sans filter on aurait 100.

  • Une fonction … rend toujours le même résultat pour les mêmes arguments et n'a aucun ….

    Voir la réponse

    Une fonction pure rend toujours le même résultat pour les mêmes arguments et n'a aucun effet de bord.

    Les deux conditions sont nécessaires : une fonction qui lit une variable globale ou l'heure dépend de l'extérieur, une fonction qui modifie son argument agit sur l'extérieur.

  • Effet de bord : de quoi s'agit-il ?

    Voir la réponse

    Tout changement qu'une fonction produit hors d'elle en plus de rendre son résultat : modifier une variable extérieure ou un argument, écrire un fichier, afficher, envoyer sur le réseau.

    Une fonction sans effet de bord n'est pas forcément pure : celle qui lit l'heure ne modifie rien, mais ne rend plus la même valeur deux fois de suite pour les mêmes arguments.

  • Une fonction de calcul de prix lit une variable globale « taux de remise ». Un test passe le matin et échoue l'après-midi avec les mêmes arguments, parce qu'un autre module a changé le taux entre-temps. Quelle est la solution ?

    • Figer la variable globale avec un verrou pendant l'exécution du test
    • Relancer le test plusieurs fois et garder le résultat majoritaire
    • Copier la valeur du taux dans une seconde variable globale
    • Passer le taux en paramètre de la fonction pour qu'elle ne dépende plus que de ses arguments
    Voir la réponse

    Passer le taux en paramètre de la fonction pour qu'elle ne dépende plus que de ses arguments

    La cause est que le résultat dépend d'un état extérieur, qu'un autre code peut changer. En faisant du taux un argument, la fonction redevient pure : mêmes arguments, même prix, test stable.