Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Introduction à la programmation fonctionnelle avec Haskell

JM Lacroix
December 02, 2011

Introduction à la programmation fonctionnelle avec Haskell

Survol des différentes caractéristiques des langages fonctionnels accompagné d'exemples simples avec Haskell.

Les exemples sont disponibles ici: https://gist.github.com/1425499

Présentation effectuée dans le cadre du OpenCode 01-12-2011

JM Lacroix

December 02, 2011
Tweet

More Decks by JM Lacroix

Other Decks in Programming

Transcript

  1. Haskell
    Purement fonctionnel
    @jmlacroix

    View full-size slide

  2. "Some may say Ruby is a bad rip-off of Lisp or Smalltalk,
    and I admit that. But it is nicer to ordinary people."
    - Matz

    View full-size slide

  3. Survol
    • Bases théoriques
    • Exemples avec Haskell

    View full-size slide

  4. Programmation
    fonctionnelle

    View full-size slide

  5. « style fondamental détaillant la manière dont les solutions
    aux problèmes doivent être formulées dans un langage »
    Qu’est-ce?
    Paradigme de programmation
    En gros, c’est l’évaluation d'expressions
    plutôt que des séquences d'instructions

    View full-size slide

  6. Pourquoi l’apprendre?
    • Voir les problèmes sous un autre angle
    • Sortir de sa zone de confort

    View full-size slide

  7. Concepts
    • Fonctions d’ordre supérieur
    • Pureté
    • Récursivité
    • Typage fort

    View full-size slide

  8. • Fonctions en reçoivent et en retournent
    • Permet l’application partielle
    Concepts
    Fonctions d’ordre supérieur

    View full-size slide

  9. • Données immuables
    • Transparence référentielle
    • Évaluation paresseuse
    • Effets de bord
    Concepts
    Pureté
    f (x) = x2
    fonction entrée sortie

    View full-size slide

  10. • Les variables ne peuvent pas changer
    • Permet de n’avoir aucun effet de bord
    Concepts
    Pureté: Données immuables

    View full-size slide

  11. • Pour chaque valeur d’argument, la fonction
    retourne le même résultat
    • Permet d’appeler les fonctions dans un
    ordre différent
    Concepts
    Pureté: Transparence référentielle

    View full-size slide

  12. • Les valeurs ne sont pas calculées tant
    qu’elles ne sont pas nécessaires
    • Permet des structures de données infinies
    Concepts
    Pureté: Évaluation paresseuse

    View full-size slide

  13. • Certaines fonctionnalités ayant des effets
    de bord sont souhaitables (I/O)
    • Permet d’encapsuler et localiser les effets
    de bord (Monades)
    Concepts
    Pureté: Effets de bord

    View full-size slide

  14. • Fonction définies par rapport à elles mêmes
    • Permet d’écrire une fonction simple qui
    s’invoque à l’infini jusqu’à ses cas de base
    Concepts
    Récursivité

    View full-size slide

  15. • Conversion explicite entre les types
    • Permet de déduire les signatures et de
    valider automatiquement les fonctions
    Concepts
    Typage fort

    View full-size slide

  16. • Force une meilleure structure à travers des
    abstractions et composantes
    • Exprime des idées simplement grâce à des
    programmes courts et clairs
    • Programmes plus souples et robustes
    Avantages

    View full-size slide

  17. Utilisation
    • Map & Reduce
    • Erlang (Télécommunications)
    • OCaml (Finances)
    • Lisp (Emacs)
    • Haskell (Académique, Xmonad, Darcs)
    • Autres (Scala / Clojure (Java), F# (.NET))

    View full-size slide

  18. Pourquoi Haskell?
    • Le plus pur
    • Concis et élégant
    • Haut niveau
    • Mémoire gérée
    • Modulaire
    • Compilable

    View full-size slide

  19. Élégance
    Ruby
    Haskell

    View full-size slide

  20. Performance
    C
    C++
    Java 7
    Scala
    Haskell
    OCaml
    Lisp
    Clojure
    Erlang
    PHP
    Ruby 1.9
    Python 3
    Perl
    bit.ly/rTMT6U

    View full-size slide

  21. Démonstration
    ghci
    http://gist.github.com/1425499
    Notes utilisées pour les exemples

    View full-size slide

  22. Références
    http://learnyouahaskell.com/
    En ligne:
    En livre:
    Gratuit
    ~30$
    http://book.realworldhaskell.org
    En ligne:
    En livre:
    Gratuit
    ~40$

    View full-size slide

  23. Articles d’intérêt
    http://www.joelonsoftware.com/items/2006/08/01.html
    http://www.paulgraham.com/avg.html
    Beating the Averages
    Can Your Programming Language Do This?

    View full-size slide

  24. Conclusion
    Apprenez le langage fonctionnel de
    votre choix, mais apprenez-en un!

    View full-size slide