IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Haskell Discussion :

[Haskell] Craft of functional programming


Sujet :

Haskell

  1. #21
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Bon, pour situer, j'ai fait un doctorat en ingénierie chimique. Je suis actuellement prof. de Génie Chimique dans une école d'ingénieurs. [...]
    Tu as certainement la capacité de faire un effort pour suivre le paradigme.
    Pour simplifier l'histoire : tu dois programmer comme si tu faisais des maths et oublier les habitudes du C (et dérivé). Je pense que tu gagnerais à te jeter dans un cours qui enseigne tout de suite, à la dur -_-

  2. #22
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Jedai Voir le message
    Je te conseille de commencer par là : All about monad. J'espère que tu es confortable avec l'anglais ? Parce que sinon je vais être tenté de rédiger un tutoriel en français et le monde n'a pas besoin d'un tutoriel sur les monades de plus...

    --
    Jedaï
    Merci beaucoup, je vais commencer par là.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  3. #23
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Tu as certainement la capacité de faire un effort pour suivre le paradigme.
    Pour simplifier l'histoire : tu dois programmer comme si tu faisais des maths et oublier les habitudes du C (et dérivé). Je pense que tu gagnerais à te jeter dans un cours qui enseigne tout de suite, à la dur -_-
    OK, je vais me jeter à l'eau avec les ouvrages à ma disposition. En suivant le lien donné par Jedai, j'ai pu avoir la confirmation ici que "Haskel: The Craft of Functional Programming" semble adapté à mes besoins de débutant en programmation fonctionnelle. J'ai également trouvé l'ouvrge de Graham Hutton à la bibliothèque et je vais y jeter un oeil.

    Merci pour vos conseils.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  4. #24
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    @gorgonite : Je pense que le mieux serait de se débarrasser de OCaml une bonne fois pour toutes, étant donné que le projet est quasiment mort, ou en salle de réanimation.

    @Thierry Chappuis : Les monades, c'est tout con, mais tout le monde pense le contraire. Pour les comprendre, il faut savoir que Haskell est un langage paresseux...

    En fait, dans un langage paresseux, à l'inverse des langages stricts (C, OCaml...), les valeurs ne sont calculées qu'au moment de leur utilisation... c'est comme ça que l'on peut, par exemple, écrire la liste suivante [1 ..] contenant tous les nombres entiers plus grands que 1, et pour autant ne pas encombrer la mémoire, car ces nombres seront effectivement évalués lors de leur utilisation.

    Une fois dit ça, on comprend mieux que dans un programme Haskell standard il est difficile, voire impossible, de prédire l'ordre d'évaluation des arguments. En ce sens, ne serait-ce qu'afficher à l'écran des messages dans un certain ordre ou devoir faire des opérations les unes après les autres de façon explicite, est impossible.

    C'est pour celà que les monades ont été introduites. Les monades sont LA façon dans un langage paresseux comme Haskell d'effectuer des actions ou d'évaluer des valeurs dans un ordre prédéterminé.

    Là où les choses deviennent un peu plus difficiles à saisir, c'est que les monades sont elles-mêmes des valeurs ! Pour ne pas casser l'aspect paresseux du langage, il est nécessaire d'enfermer cette succession d'évaluations dans une valeur particulière, elle-même paresseuse. C'est ce que l'on appelle en informatique une fermeture. La même notion existe pour OCaml, mais les valeurs paresseuses sont créées de façon explicite.

    Il y a ensuite d'autres avantages aux monades, comme la modularité dans le code et une certaine élégance ("Elegance is an attitude"...) dans le code que les Haskellers aiment bien (et moi aussi d'ailleurs).

    Ensuite, toutes les considérations théoriques ne sont que du sucre glace d'habillage.
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  5. #25
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Merci! Ca reste abstrait pour l'instant et je ne saisis encore réellement ce que représente une monade, mais je reviendrai sur ton commentaire à plusieurs reprises durant mon apprentissage. Nul doute que ça va m'aider.

    Meilleures salutations

    Thierry

    P.S. OCaml est-il réellement moribond?
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  6. #26
    Membre éprouvé
    Avatar de InOCamlWeTrust
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 036
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 036
    Points : 1 284
    Points
    1 284
    Par défaut
    Non, mais bon, étant donné que le langage en lui-même n'évolue plus depuis OCaml 3.07 (2002 plus ou moins... donc bientôt 6 ans), que les gens s'en occupant n'en font pas leur priorité (ils sont sur des projets de preuves formelles, entre autres) et que le remplaçant de OCaml ne présente pas un engouement de la part du staff significative... ben Haskell, avec sa communauté en majorité jeune, dynamique et sympatique, même si moins bonne techniquement (quoique ça s'est nettement amélioré), est aujourd'hui LE langage fonctionnel, sans aucun doute.

    Le problème de OCaml, c'est que le staff de l'INRIA a voulu faire d'une chose accessible à tous (nuls, moins bons, bons et chevronnés) un langage d'élite intellectuel normalien polytechnicien mineur centralien et ayant résidé à Fresnes ! Forcément, le produit s'est vu trop tôt enfermé en classe prépa et en fac, alors même qu'il avait un très gros potentiel : omni-paradigme, très performant, bien documenté, etc...

    Haskell, c'est l'inverse : un truc de théoricien quantique autiste dont la communauté a fait un langage accessible à tous par un gros effort de promotion.

    Voilà, la différence est là et pas ailleurs.

    La supériorité technique (car OCaml est meilleur que Haskell sur le plan technique, même si l'écart se creuse à vitesse V) ne suffit pas à imposer un produit, payant ou non (les deux sont gratuits, en partie).
    When Colt produced the first practical repeating handgun, it gave rise to the saying God created men, but Colt made them equal.

  7. #27
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    @gorgonite : Je pense que le mieux serait de se débarrasser de OCaml une bonne fois pour toutes, étant donné que le projet est quasiment mort, ou en salle de réanimation.
    Ce qui est bien avec toi, c'est que tu n'es pas dutout un extrémiste... Il faudrait peut être commencer par se débarasser des langages qui n'ont connu aucune évolution depuis 30 à ce compte là non ? :-\ Pourquoi est ce qu'il faudrait 15 nouvelles fonctionnalités par jours pour qu'un langage soit fonctionnel (pas dans le sens != impératif hein ;-)) et intéressant ? Et puis bon, les variants polymorphe par exemple sont un exemple de fonctionnalité ajouté il y a peu, et à ma connaissance, Xavier Leroy envisage encore un certain nombre d'apport au langage et on peut espérer que les travaux de Dider Rémy sur le système de module apporteront du neuf dans cette direction. Bref... ce n'est pas le thème du fil :-)

  8. #28
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    Une fois dit ça, on comprend mieux que dans un programme Haskell standard il est difficile, voire impossible, de prédire l'ordre d'évaluation des arguments. En ce sens, ne serait-ce qu'afficher à l'écran des messages dans un certain ordre ou devoir faire des opérations les unes après les autres de façon explicite, est impossible.

    C'est pour celà que les monades ont été introduites. Les monades sont LA façon dans un langage paresseux comme Haskell d'effectuer des actions ou d'évaluer des valeurs dans un ordre prédéterminé.

    Là où les choses deviennent un peu plus difficiles à saisir, c'est que les monades sont elles-mêmes des valeurs ! Pour ne pas casser l'aspect paresseux du langage, il est nécessaire d'enfermer cette succession d'évaluations dans une valeur particulière, elle-même paresseuse. C'est ce que l'on appelle en informatique une fermeture. La même notion existe pour OCaml, mais les valeurs paresseuses sont créées de façon explicite.
    Tu mélanges un peu tout là... Les fermetures n'ont rien à voir avec les monades, pas plus qu'avec l'évaluation paresseuse.
    Par ailleurs s'il est vrai que certaines monades permettent de forcer l'ordre d'évaluation, ce n'est pas le cas de toutes, loin de là.

    --
    Jedaï

  9. #29
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    [...] ben Haskell, avec sa communauté en majorité jeune, dynamique et sympatique, même si moins bonne techniquement (quoique ça s'est nettement amélioré), est aujourd'hui LE langage fonctionnel, sans aucun doute.[...]
    Je ne suis pas convaincu vois-tu.
    À mon avis, Lisp (CommonLisp/Scheme etc.) forme LE langage fonctionnel. C'est du moins l'impression que je vois dans les parutions. Beaucoup d'exemples et de prototype en Scheme, rarement en Haskell.

  10. #30
    Inactif  
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    1 958
    Détails du profil
    Informations personnelles :
    Âge : 58
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 1 958
    Points : 2 467
    Points
    2 467
    Par défaut
    Citation Envoyé par InOCamlWeTrust Voir le message
    [...]
    Là où les choses deviennent un peu plus difficiles à saisir, c'est que les monades sont elles-mêmes des valeurs ! Pour ne pas casser l'aspect paresseux du langage, il est nécessaire d'enfermer cette succession d'évaluations dans une valeur particulière, elle-même paresseuse. C'est ce que l'on appelle en informatique une fermeture. La même notion existe pour OCaml, mais les valeurs paresseuses sont créées de façon explicite.[...]
    La fermeture n'a rien à voir avec l'évaluation paresseuse. Une fermeture est une fonction évaluée dans un environnement qui est capturé par la fonction lors de sa définition. C'est le principe du let en général dans ces dérivés des langages fonctionnels. Ça permet de capturer des définitions de fonctions pour s'assurer qu'elle ne seront pas redéfinies. Car sinon l'évaluation des variables se déroule dans l'environnement top-level. Bon quoiqu'il en soit, les fermetures sont un « classique » de la programmation fonctionnelle. Ruby dispose de réel fermeture. Ce qui n'est pas le cas de Python. La notion de « paresseux » est autre chose. C'est une amélioration de l'évaluation en ordre normale.

  11. #31
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Ruby dispose de réel fermeture. Ce qui n'est pas le cas de Python. La notion de « paresseux » est autre chose. C'est une amélioration de l'évaluation en ordre normale.
    On s'éloigne du sujet du fil, mais bon je suis curieux. Pourquoi dis-tu que Python ne dispose pas d'une réelle fermeture? Il me semble que c'est le cas depuis Python 2.2, non? Quelles propriété doit avoir une réelle fermerture?

    Sinon, avec tout ça, les monades sont pour moi un sujet de plus en plus confus. Je vais m'assoir à une table avec une bonne tasse de thé et lire attentivement les ressources à ma disposition. J'y verrai sans doute plus clair après.

    Merci pour tout

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  12. #32
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par Garulfo Voir le message
    Euh.. j'ai pas compris ta réponse.
    Bon je résume... tu as dit: « tant que tu n'abordes pas les foncteurs, ça reste du lambda calcul typé » ... donc je me demande si on a besoin des foncteurs en oCaml pour utiliser des mutables. Parce que si non, ça n'est pas très lambda calcul... si oui, alors je ne le savais pas


    qui te dis que je considère que les mutables font partie du paradigme fonctionnel...

    donc je persiste et signe... tant qu'on reste en paradigme fonctionnel PUR et qu'on ne joue pas avec des foncteurs, ça reste quand même du lambda calcul typé
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  13. #33
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Aurez-vous quelques références abordables au sujet des aspects théoriques du lambda calcul, typé ou non?

    Le lambda calcul et la théorie de catégories sont-il les deux points à étudier si je désire étoffer un peu mes connaissances théorique par rapport à la programmation fonctionnelle ou y a-t'il d'autres aspects à creuser?

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  14. #34
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    le lambda-calcul :
    http://citeseer.ist.psu.edu/252095.html (ce n'est pas celui que je voulais, mais c'est la même auteur )

    la théorie des types :
    http://www.lix.polytechnique.fr/~dow...es_types.ps.gz

    sur la théorie des catégories, DrTopos a certainement mis plein de liens dans ses posts
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  15. #35
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Merci pour les liens, gorgonite!

    Je vais également essayer de voir dans les posts de DrTopos. Généralement, ses posts sont d'un niveau technique trop élevé pour moi. Je vais jeter un coup d'oeil aux liens qu'il donne.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  16. #36
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par Thierry Chappuis Voir le message
    Aurez-vous quelques références abordables au sujet des aspects théoriques du lambda calcul, typé ou non?

    Le lambda calcul et la théorie de catégories sont-il les deux points à étudier si je désire étoffer un peu mes connaissances théorique par rapport à la programmation fonctionnelle ou y a-t'il d'autres aspects à creuser?

    Thierry
    Le lambda calcul peut être un plus, mais c'est loin d'être vital (j'ai fait 6 ans de prog fonctionnel sans la moindre notion de lambda calcul)

    La théorie des catégories, si tu ne veux pas *créer* ton propre langage, je pense sincérement que ça ne te servira à rien.

  17. #37
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 679
    Points
    18 679
    Par défaut
    Citation Envoyé par alex_pi Voir le message
    Le lambda calcul peut être un plus, mais c'est loin d'être vital (j'ai fait 6 ans de prog fonctionnel sans la moindre notion de lambda calcul)
    je ne pense pas non plus que ce soit indispensable, mais ça introduit bien à la "logique à utiliser" en programmation fonctionnelle


    Citation Envoyé par alex_pi Voir le message
    La théorie des catégories, si tu ne veux pas *créer* ton propre langage, je pense sincérement que ça ne te servira à rien.

    pas tout à fait d'accord surtout s'il s'attaque au Mont Haskell...
    mais il est clair que les Monades sont bien moins complexes que l'ensemble de la théorie des catégories


    en ce qui concerne la théorie des types, ça me semble indispensable aussi bien avec OCaml qu'Haskell... même si l'on peut quand même s'en passer et se forger une intuition de la chose
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  18. #38
    Expert confirmé
    Avatar de Thierry Chappuis
    Homme Profil pro
    Enseignant Chercheur
    Inscrit en
    Mai 2005
    Messages
    3 499
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Suisse

    Informations professionnelles :
    Activité : Enseignant Chercheur
    Secteur : Industrie Pharmaceutique

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 499
    Points : 5 360
    Points
    5 360
    Par défaut
    Je vais déjà survoler les liens que m'a donné gorgonite pour me faire une idée... et si ça peut aider.

    Thierry
    "The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
    "If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow

    FAQ-Python FAQ-C FAQ-C++

    +

  19. #39
    alex_pi
    Invité(e)
    Par défaut
    Citation Envoyé par gorgonite Voir le message
    pas tout à fait d'accord surtout s'il s'attaque au Mont Haskell...
    Personnellement encore, on m'a présenté les monades en programmation fonctionnelle ou en Coq sans avoir à utiliser la théorie des catégories...



    en ce qui concerne la théorie des types, ça me semble indispensable aussi bien avec OCaml qu'Haskell... même si l'on peut quand même s'en passer et se forger une intuition de la chose
    Ca dépend ce que tu appeles théorie des types. Pour moi c'est "théorie intuitionniste des types de Martin-Löf, System F, CCI". Je ne suis pas sûr que ce soit vraiment utile :-) En OCaml, une fois que tu as compris ce qu'est le type fleche et a peu pret les types algébriques, tu t'en sors assez bien. Et par contre, je pense que sans avoir un peu pratiqué la prog fonctionnelle, la théorie des types, ça pique vraiment !

    Disons que ce n'est pas parce que OCaml et Haskel ont des fondement théorique de qualité qu'il est vraiment indispensable ni même utile d'en saisir tous les tenant et aboutissant avant de se lancer.

    Pour moi le schéma serait plutôt : commencer la prog fonctionnelle, se forger une intuition, et seulement ensuite étudier les fondements théoriques de cette intuition.

  20. #40
    Membre émérite
    Avatar de SpiceGuid
    Homme Profil pro
    Inscrit en
    Juin 2007
    Messages
    1 704
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Juin 2007
    Messages : 1 704
    Points : 2 990
    Points
    2 990
    Par défaut
    Surtout ne place pas la théorie avant le langage, la théorie vient après le langage. Aucune de ces trois théories n'est accessible si tu n'es pas déjà un expert en programmation fonctionnelle:
    • au lieu détudier le lambda-calcul mieux vaut savoir que la flèche est associative à droite (c'est dit dans le Gentle introduction to Haskell)
    • au lieu d'étudier la théorie des catégories mieux vaut savoir ce qu'est un type inductif (désolé je n'ai pas de référence en tête donc je te renvoie à la Partie VIII de mon tutoriel)
    • au lieu d'étudier la théorie des types mieux vaut connaître les règles d'inférence (là encore je n'ai pas de référence en tête donc je te renvoie à la Partie II de mon tutoriel qui détaille ces règles pour OCaml, expression par expression)


    Du point de vue du programmeur fonctionnel (surtout débutant) chacune de ces 3 théories se résume à l'unique notion en gras.

    Un dernier conseil (j'essaye de donner un minimum de conseils qui soient un maximum utiles): pour commencer considère que ton langage fonctionnel (par exemple Haskell) n'est qu'une calculatrice, de cette façon tu te concentre vraiment sur le paradigme fonctionnel et tu n'es pas entravé par les monades et plus généralement la difficulté à interagir/interfacer (ce qui, il faut le reconnaître, n'est pas le point fort du paradigme fonctionnel).
    Du même auteur: mon projet, le dernier article publié, le blog dvp et le jeu vidéo.
    Avant de poser une question je lis les règles du forum.

Discussions similaires

  1. Réponses: 6
    Dernier message: 05/05/2015, 15h48
  2. Functional Reactive Programming en Java
    Par CyaNnOrangehead dans le forum Langage
    Réponses: 54
    Dernier message: 03/11/2013, 00h24
  3. parser recursif programming haskell
    Par jjinkou2 dans le forum Haskell
    Réponses: 4
    Dernier message: 28/04/2011, 11h00

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo