Caractérisation des langages fonctionnels

Bonjour, Je vais peut-être poser une question très générale, mais qu'est-ce qui caractérise un langage de programmation fonctionnel ? Je m'explique : - je sais qu'un LPF se base sur des expressions - je sais en reconnaître un quand j'en vois un mais chaque fois qu'on me pose la question, je ne suis pas foutu de donner des éléments caractéristiques clairs. Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me permette de l'expliquer simplement/clairement de manière juste ? Merci par avance.

Bonjour,
Récemment je me suis posé la question avec un collègue pour introduire un séminaire interne sur les langages fonctionnels, et on n’a pas réussi à trouver une réponse satisfaisante, on s’est heurté aux différents types de langage fonctionnel (Lisp, ML famille, Haskell, etc.), qui peuvent inclure des éléments de langages impératifs, des objets, des types algébriques ou uniquement des types simples et qui ont des stratégies d’évaluation différentes.
Personnellement, je dirais que dans un langage de fonctionnel l’exécution d’un programme se fait uniquement par substitution d’expression sans modification de l’état d’une machine alors que dans un langage impératif l’exécution se fait par évaluation d’expression et modification de l’état de la machine.
On peut aussi dire que les langages fonctionnels sont basés sur le lambda-calcul de Church, alors que les langages impératifs sont basés sur la machine de Turing, mais il faut expliquer ce qu’est le lambda-calcul.
Laurent Pierron
Le 20 mars 2014 à 11:26, Gautier DI FOLCO

Le 21 mars 2014 11:46, Laurent Pierron
Bonjour,
Récemment je me suis posé la question avec un collègue pour introduire un séminaire interne sur les langages fonctionnels, et on n'a pas réussi à trouver une réponse satisfaisante, on s'est heurté aux différents types de langage fonctionnel (Lisp, ML famille, Haskell, etc.), qui peuvent inclure des éléments de langages impératifs, des objets, des types algébriques ou uniquement des types simples et qui ont des stratégies d'évaluation différentes.
Personnellement, je dirais que dans un langage de fonctionnel l'exécution d'un programme se fait uniquement par substitution d'expression sans modification de l'état d'une machine alors que dans un langage impératif l'exécution se fait par évaluation d'expression et modification de l'état de la machine.
On peut aussi dire que les langages fonctionnels sont basés sur le lambda-calcul de Church, alors que les langages impératifs sont basés sur la machine de Turing, mais il faut expliquer ce qu'est le lambda-calcul.
Laurent Pierron
Le 20 mars 2014 à 11:26, Gautier DI FOLCO
a écrit : Bonjour,
Je vais peut-être poser une question très générale, mais qu'est-ce qui caractérise un langage de programmation fonctionnel ? Je m'explique : - je sais qu'un LPF se base sur des expressions - je sais en reconnaître un quand j'en vois un
mais chaque fois qu'on me pose la question, je ne suis pas foutu de donner des éléments caractéristiques clairs.
Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me permette de l'expliquer simplement/clairement de manière juste ?
Merci par avance. _______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
Bonjour, Si je rajoute "conceptuellement" la définition me convient. Merci.

Etant autodidacte, je n'ai pas d'autorité particulière pour parler
d'un sujet d'origine académique. :)
De plus ma réponse est biaisée par mon intérêt pour les langages elm et idris .
La programmation fonctionnelle moderne tourne autour de deux thèmes, celui de la
référence transparentielle et celui de type.
Le premier est déjà mentionné implicitement sans indiquer le bénéfice
espéré : l'absence d'états permettrait aux compilateur de paralléliser
et d'utiliser au mieux les architectures multiprocesseurs.
En pratique, sauf dans des cas spécialisés (grosses matrices, rendu
graphique), ce bénéfice ne s'est guère matérialisé.
Pourtant, c'est cette perspective qui a motivé le développement des
langages fonctionnels pour résoudre le goulot d'étranglement de
l'architecture de Von Neumann. Voir le papier de Backus en 1977 :
https://www.cs.ucf.edu/~dcm/Teaching/COT4810-Fall%202012/Literature/Backus.p...
La notion de type permet pour les langages les moins "riches"
(polymorphiques de niveau
1) d'offrir l'inférence de type. Tandis des langages langages comme
idris proposent des types paramétrés par des valeurs ce qui permet un
système plus riche mais oblige à beaucoup d'annotations de type. C'est
pourquoi ces langages étaient jusqu'à maintenant spécialisés dans des
domaines comme la création de prevues formels.
Le domaine est encore revitalisé par la découverte des similarités
entre un champ de la topologie et la théorie des types. Mais je ne
sais pas si (ou quand) cela aura un impact en dehors des milieux
académiques. Voir http://homotopytypetheory.org/
Il est intéressant de noter que la syntaxe de beaucoup de langages
fonctionnels est héritée d'ISWIM, un langage hypothétique présenté par
Landin dans un papier de 1966.
http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf
Finalement, un sujet connexe est la programmation réactive
fonctionnelle. Un des intérêts est de permettre
le type de programmation interactive prônée par Bret Victor mais
probablement impossible dans tout autre contexte. Bret Victor semble
délibérément ignorer cette contrainte en proposant des démos qui la
cachent.
Dans ce domaine un langage est particulièrement prometteur : elm.
La société Prezi entend utiliser elm pour les prochaines versions de
son produit et a embauché le créateur
du langage, ce qui pourrait garantir sa pérennité. Même si la
programmation réactive fonctionnelle est un sous champ de la
programmation fonctionnelle, un programme généré par elm a le mérite
de tourner dans un browser et de permettre des démos interactives ce
qui rend le sujet moins aride.
http://elm-lang.org/blog/Interactive-Programming.elm
http://worrydream.com/LearnableProgramming/
On 3/21/14, Laurent Pierron
Bonjour,
Récemment je me suis posé la question avec un collègue pour introduire un séminaire interne sur les langages fonctionnels, et on n'a pas réussi à trouver une réponse satisfaisante, on s'est heurté aux différents types de langage fonctionnel (Lisp, ML famille, Haskell, etc.), qui peuvent inclure des éléments de langages impératifs, des objets, des types algébriques ou uniquement des types simples et qui ont des stratégies d'évaluation différentes.
Personnellement, je dirais que dans un langage de fonctionnel l'exécution d'un programme se fait uniquement par substitution d'expression sans modification de l'état d'une machine alors que dans un langage impératif l'exécution se fait par évaluation d'expression et modification de l'état de la machine.
On peut aussi dire que les langages fonctionnels sont basés sur le lambda-calcul de Church, alors que les langages impératifs sont basés sur la machine de Turing, mais il faut expliquer ce qu'est le lambda-calcul.
Laurent Pierron
Le 20 mars 2014 à 11:26, Gautier DI FOLCO
a écrit : Bonjour,
Je vais peut-être poser une question très générale, mais qu'est-ce qui caractérise un langage de programmation fonctionnel ? Je m'explique : - je sais qu'un LPF se base sur des expressions - je sais en reconnaître un quand j'en vois un
mais chaque fois qu'on me pose la question, je ne suis pas foutu de donner des éléments caractéristiques clairs.
Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me permette de l'expliquer simplement/clairement de manière juste ?
Merci par avance. _______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
-- cognominal stef

Le 21 mars 2014 13:15, Stéphane Payrard
Etant autodidacte, je n'ai pas d'autorité particulière pour parler d'un sujet d'origine académique. :) De plus ma réponse est biaisée par mon intérêt pour les langages elm et idris .
La programmation fonctionnelle moderne tourne autour de deux thèmes, celui de la référence transparentielle et celui de type.
Le premier est déjà mentionné implicitement sans indiquer le bénéfice espéré : l'absence d'états permettrait aux compilateur de paralléliser et d'utiliser au mieux les architectures multiprocesseurs. En pratique, sauf dans des cas spécialisés (grosses matrices, rendu graphique), ce bénéfice ne s'est guère matérialisé. Pourtant, c'est cette perspective qui a motivé le développement des langages fonctionnels pour résoudre le goulot d'étranglement de l'architecture de Von Neumann. Voir le papier de Backus en 1977 :
https://www.cs.ucf.edu/~dcm/Teaching/COT4810-Fall%202012/Literature/Backus.p...
La notion de type permet pour les langages les moins "riches" (polymorphiques de niveau 1) d'offrir l'inférence de type. Tandis des langages langages comme idris proposent des types paramétrés par des valeurs ce qui permet un système plus riche mais oblige à beaucoup d'annotations de type. C'est pourquoi ces langages étaient jusqu'à maintenant spécialisés dans des domaines comme la création de prevues formels. Le domaine est encore revitalisé par la découverte des similarités entre un champ de la topologie et la théorie des types. Mais je ne sais pas si (ou quand) cela aura un impact en dehors des milieux académiques. Voir http://homotopytypetheory.org/
Il est intéressant de noter que la syntaxe de beaucoup de langages fonctionnels est héritée d'ISWIM, un langage hypothétique présenté par Landin dans un papier de 1966. http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf
Finalement, un sujet connexe est la programmation réactive fonctionnelle. Un des intérêts est de permettre le type de programmation interactive prônée par Bret Victor mais probablement impossible dans tout autre contexte. Bret Victor semble délibérément ignorer cette contrainte en proposant des démos qui la cachent. Dans ce domaine un langage est particulièrement prometteur : elm. La société Prezi entend utiliser elm pour les prochaines versions de son produit et a embauché le créateur du langage, ce qui pourrait garantir sa pérennité. Même si la programmation réactive fonctionnelle est un sous champ de la programmation fonctionnelle, un programme généré par elm a le mérite de tourner dans un browser et de permettre des démos interactives ce qui rend le sujet moins aride.
http://elm-lang.org/blog/Interactive-Programming.elm http://worrydream.com/LearnableProgramming/
On 3/21/14, Laurent Pierron
wrote: Bonjour,
Récemment je me suis posé la question avec un collègue pour introduire un séminaire interne sur les langages fonctionnels, et on n'a pas réussi à trouver une réponse satisfaisante, on s'est heurté aux différents types de langage fonctionnel (Lisp, ML famille, Haskell, etc.), qui peuvent inclure des éléments de langages impératifs, des objets, des types algébriques ou uniquement des types simples et qui ont des stratégies d'évaluation différentes.
Personnellement, je dirais que dans un langage de fonctionnel l'exécution d'un programme se fait uniquement par substitution d'expression sans modification de l'état d'une machine alors que dans un langage impératif l'exécution se fait par évaluation d'expression et modification de l'état de la machine.
On peut aussi dire que les langages fonctionnels sont basés sur le lambda-calcul de Church, alors que les langages impératifs sont basés sur la machine de Turing, mais il faut expliquer ce qu'est le lambda-calcul.
Laurent Pierron
Le 20 mars 2014 à 11:26, Gautier DI FOLCO
a écrit : Bonjour,
Je vais peut-être poser une question très générale, mais qu'est-ce qui caractérise un langage de programmation fonctionnel ? Je m'explique : - je sais qu'un LPF se base sur des expressions - je sais en reconnaître un quand j'en vois un
mais chaque fois qu'on me pose la question, je ne suis pas foutu de donner des éléments caractéristiques clairs.
Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me permette de l'expliquer simplement/clairement de manière juste ?
Merci par avance. _______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
-- cognominal stef _______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
Je suis un peu dans le même cas, mais comme dans mes cercles je suis "le plus calé en FP" et qu'en plus je tente "d'évangéliser", j'ai de gros efforts pédagogiques à fournir (ce qui n'est pas mon point fort). Le soucis avec ces critères, transparence référentielle et typage fort/statique, c'est que du coup tu sors Scala et Clojure par exemple. PS : je suis sur du Data-flow en ce moment du coup je connais un peu le FRP, mais j'avoue ne pas avoir fait le lien avec Bret Victor.

Je serais plutôt de l'avis de Gautier et pense que la caractérisation de
Stéphane est un peu réductrice.
En pratique je trouve qu'un langage semble fonctionnel dès qu'il inclut des
mécanismes pour manipuler des fonctions comme citoyens de première classe
(valeurs fonctionelles, création de fonctions anonymes, fonctions d'ordre
supérieur).
C'est très général mais en première approximation, cela capture ce que
j'attends de tout langage qui se dit fonctionnel.
Il y a beaucoup de fonctionnalités qui sont souvent attachées aux langages
fonctionnels, mais que je ne considère pas nécessairement clés (types de
données algébriques, pureté, typage statique/dynamique ou non-typage,
portée statique/dynamique, ...).
- Valentin
2014-03-21 7:06 GMT-07:00 Gautier DI FOLCO
Le 21 mars 2014 13:15, Stéphane Payrard
a écrit : Etant autodidacte, je n'ai pas d'autorité particulière pour parler
d'un sujet d'origine académique. :) De plus ma réponse est biaisée par mon intérêt pour les langages elm et idris .
La programmation fonctionnelle moderne tourne autour de deux thèmes, celui de la référence transparentielle et celui de type.
Le premier est déjà mentionné implicitement sans indiquer le bénéfice espéré : l'absence d'états permettrait aux compilateur de paralléliser et d'utiliser au mieux les architectures multiprocesseurs. En pratique, sauf dans des cas spécialisés (grosses matrices, rendu graphique), ce bénéfice ne s'est guère matérialisé. Pourtant, c'est cette perspective qui a motivé le développement des langages fonctionnels pour résoudre le goulot d'étranglement de l'architecture de Von Neumann. Voir le papier de Backus en 1977 :
https://www.cs.ucf.edu/~dcm/Teaching/COT4810-Fall%202012/Literature/Backus.p...
La notion de type permet pour les langages les moins "riches" (polymorphiques de niveau 1) d'offrir l'inférence de type. Tandis des langages langages comme idris proposent des types paramétrés par des valeurs ce qui permet un système plus riche mais oblige à beaucoup d'annotations de type. C'est pourquoi ces langages étaient jusqu'à maintenant spécialisés dans des domaines comme la création de prevues formels. Le domaine est encore revitalisé par la découverte des similarités entre un champ de la topologie et la théorie des types. Mais je ne sais pas si (ou quand) cela aura un impact en dehors des milieux académiques. Voir http://homotopytypetheory.org/
Il est intéressant de noter que la syntaxe de beaucoup de langages fonctionnels est héritée d'ISWIM, un langage hypothétique présenté par Landin dans un papier de 1966. http://www.cs.cmu.edu/~crary/819-f09/Landin66.pdf
Finalement, un sujet connexe est la programmation réactive fonctionnelle. Un des intérêts est de permettre le type de programmation interactive prônée par Bret Victor mais probablement impossible dans tout autre contexte. Bret Victor semble délibérément ignorer cette contrainte en proposant des démos qui la cachent. Dans ce domaine un langage est particulièrement prometteur : elm. La société Prezi entend utiliser elm pour les prochaines versions de son produit et a embauché le créateur du langage, ce qui pourrait garantir sa pérennité. Même si la programmation réactive fonctionnelle est un sous champ de la programmation fonctionnelle, un programme généré par elm a le mérite de tourner dans un browser et de permettre des démos interactives ce qui rend le sujet moins aride.
http://elm-lang.org/blog/Interactive-Programming.elm http://worrydream.com/LearnableProgramming/
On 3/21/14, Laurent Pierron
wrote: Bonjour,
Récemment je me suis posé la question avec un collègue pour introduire un séminaire interne sur les langages fonctionnels, et on n'a pas réussi à trouver une réponse satisfaisante, on s'est heurté aux différents types de langage fonctionnel (Lisp, ML famille, Haskell, etc.), qui peuvent inclure des éléments de langages impératifs, des objets, des types algébriques ou uniquement des types simples et qui ont des stratégies d'évaluation différentes.
Personnellement, je dirais que dans un langage de fonctionnel l'exécution d'un programme se fait uniquement par substitution d'expression sans modification de l'état d'une machine alors que dans un langage impératif l'exécution se fait par évaluation d'expression et modification de l'état de la machine.
On peut aussi dire que les langages fonctionnels sont basés sur le lambda-calcul de Church, alors que les langages impératifs sont basés sur la machine de Turing, mais il faut expliquer ce qu'est le lambda-calcul.
Laurent Pierron
Le 20 mars 2014 à 11:26, Gautier DI FOLCO
a écrit : Bonjour,
Je vais peut-être poser une question très générale, mais qu'est-ce qui caractérise un langage de programmation fonctionnel ? Je m'explique : - je sais qu'un LPF se base sur des expressions - je sais en reconnaître un quand j'en vois un
mais chaque fois qu'on me pose la question, je ne suis pas foutu de donner des éléments caractéristiques clairs.
Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me permette de l'expliquer simplement/clairement de manière juste ?
Merci par avance. _______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
-- cognominal stef _______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr
Je suis un peu dans le même cas, mais comme dans mes cercles je suis "le plus calé en FP" et qu'en plus je tente "d’évangéliser", j'ai de gros efforts pédagogiques à fournir (ce qui n'est pas mon point fort). Le soucis avec ces critères, transparence référentielle et typage fort/statique, c'est que du coup tu sors Scala et Clojure par exemple.
PS : je suis sur du Data-flow en ce moment du coup je connais un peu le FRP, mais j'avoue ne pas avoir fait le lien avec Bret Victor.
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr

Bonjour Gautier,
Pourquoi as-tu besoin de caractériser "un langage de programmation
fonctionnel" ?
--
Arnaud Bailly
FoldLabs Associate: http://foldlabs.com
2014-03-20 11:26 GMT+01:00 Gautier DI FOLCO
Bonjour,
Je vais peut-être poser une question très générale, mais qu'est-ce qui caractérise un langage de programmation fonctionnel ? Je m'explique : - je sais qu'un LPF se base sur des expressions - je sais en reconnaître un quand j'en vois un
mais chaque fois qu'on me pose la question, je ne suis pas foutu de donner des éléments caractéristiques clairs.
Est-ce que vous auriez une "phrase toute faite" ou quelque chose qui me permette de l'expliquer simplement/clairement de manière juste ?
Merci par avance.
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr

Le 21 mars 2014 16:21, Arnaud Bailly
Bonjour Gautier,
Pourquoi as-tu besoin de caractériser "un langage de programmation fonctionnel" ?
Comme je l'ai dit : "pour pouvoir répondre quand on me pose la question".

Question subsidiaire : Il me semblait qu'en FP tout était fonctions, hors ça fait déjà 2-3 fois que j'entends que tout est valeurs, qu'en est-il vraiment ?

Puisque les fonctions sont manipulables comme toute valeur, les fonctions
sont considérées des valeurs.
Pour ce qui est du "tout est fonction", je dirais que c'est plutôt une
caractéristique du lambda-calcul dans sa forme la plus épurée, quand tout
est encodé à la Church.
Mais ce n'est qu'un modèle de langage fonctionnel.
- Valentin
2014-03-22 4:08 GMT-07:00 Gautier DI FOLCO
Question subsidiaire : Il me semblait qu'en FP tout était fonctions, hors ça fait déjà 2-3 fois que j'entends que tout est valeurs, qu'en est-il vraiment ?
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.org http://www.haskell.org/mailman/listinfo/haskell-fr

Le 22 mars 2014 17:13, Valentin Robert
Puisque les fonctions sont manipulables comme toute valeur, les fonctions sont considérées des valeurs.
Pour ce qui est du "tout est fonction", je dirais que c'est plutôt une caractéristique du lambda-calcul dans sa forme la plus épurée, quand tout est encodé à la Church. Mais ce n'est qu'un modèle de langage fonctionnel.
- Valentin
ok, merci.

Pour certains langages, outre les fonctions, les types et les types de
types (kinds en anglais) sont aussi des valeurs.
C'est le cas pour les langages fonctionnels à typage dépendant comme idris.
C'est aussi nécessaire pour des langages qui supportent la réflexion :
http://fr.wikipedia.org/wiki/R%C3%A9flexion_(informatique)
Les types comme valeur sont notamment nécessaires pour les langages
qui incluent un métamodèle. Cela permet d'implémenter différents modèles
objet, de décrire le format des valeurs en mémoire selon leur type, de
sérialiser les données et d'interragir avec des bibliothéques externes.
Ainsi une fonction est décrite en partie par sa signature qui décrit le
type des paramètres et de celui de la valeur de retour. Via la
réflexion, la signature est accessible comme une valeur de type Signature.
C'est un des points forts de Perl 6 et plus particulièrement d'un des
VM backend de son compilateur rakudo : moarvm.
http://perl6advent.wordpress.com/2011/12/14/meta-programming-what-why-and-ho...
http://www.jnthn.net/papers/2013-yapceu-moarvm.pdf
https://github.com/jnthn/zavolaj/blob/master/README.markdown
Mais on sort du fonctionnel et on entre dans la caractérisation des
langages modernes en général.
Il est néanmoins intéressant de constater qu'avec Scala ou Perl 6 le
fonctionnel devient un paradigme parmi d'autres dans des langages
génériques et de comprendre comment il s'y intègre.
On Saturday, March 22, 2014, Valentin Robert
Puisque les fonctions sont manipulables comme toute valeur, les fonctions sont considérées des valeurs.
Pour ce qui est du "tout est fonction", je dirais que c'est plutôt une caractéristique du lambda-calcul dans sa forme la plus épurée, quand tout est encodé à la Church. Mais ce n'est qu'un modèle de langage fonctionnel.
- Valentin
2014-03-22 4:08 GMT-07:00 Gautier DI FOLCO
javascript:_e(%7B%7D,'cvml','gautier.difolco@gmail.com'); :
Question subsidiaire : Il me semblait qu'en FP tout était fonctions, hors ça fait déjà 2-3 fois que j'entends que tout est valeurs, qu'en est-il vraiment ?
_______________________________________________ Haskell-fr mailing list Haskell-fr@haskell.orgjavascript:_e(%7B%7D,'cvml','Haskell-fr@haskell.org'); http://www.haskell.org/mailman/listinfo/haskell-fr
-- cognominal stef

Le 22 mars 2014 18:22, Stéphane Payrard
Pour certains langages, outre les fonctions, les types et les types de types (kinds en anglais) sont aussi des valeurs. C'est le cas pour les langages fonctionnels à typage dépendant comme idris. C'est aussi nécessaire pour des langages qui supportent la réflexion : http://fr.wikipedia.org/wiki/R%C3%A9flexion_(informatique) Les types comme valeur sont notamment nécessaires pour les langages qui incluent un métamodèle. Cela permet d'implémenter différents modèles objet, de décrire le format des valeurs en mémoire selon leur type, de sérialiser les données et d'interragir avec des bibliothéques externes. Ainsi une fonction est décrite en partie par sa signature qui décrit le type des paramètres et de celui de la valeur de retour. Via la réflexion, la signature est accessible comme une valeur de type Signature. C'est un des points forts de Perl 6 et plus particulièrement d'un des VM backend de son compilateur rakudo : moarvm.
http://perl6advent.wordpress.com/2011/12/14/meta-programming-what-why-and-ho... http://www.jnthn.net/papers/2013-yapceu-moarvm.pdf https://github.com/jnthn/zavolaj/blob/master/README.markdown
Mais on sort du fonctionnel et on entre dans la caractérisation des langages modernes en général. Il est néanmoins intéressant de constater qu'avec Scala ou Perl 6 le fonctionnel devient un paradigme parmi d'autres dans des langages génériques et de comprendre comment il s'y intègre.
Intéressant. Je vais peut-être dire une bêtise, mais il me semble que la seule manière de manipuler Haskell depuis Haskell (faire de la réflexion) est d'utiliser les templates. Est-ce qu'il y a une explication sur le fait que ça ne soit pas plus intégrer ? (on me vante beaucoup la grande simplicité des macro de lisp par exemple) PS : j'ai conscience du faire que ce soit extrêmement provocateur, mais ce n'est pas mon but, je cherche juste à avoir une meilleure vue d'ensemble, toutes corrections/explications/éclaircissements(/insultes, mais pas trop) sont les bienvenues.
participants (5)
-
Arnaud Bailly
-
Gautier DI FOLCO
-
Laurent Pierron
-
Stéphane Payrard
-
Valentin Robert