diff options
Diffstat (limited to 'content/Informatique/ocaml_ppx.rst')
-rw-r--r-- | content/Informatique/ocaml_ppx.rst | 97 |
1 files changed, 0 insertions, 97 deletions
diff --git a/content/Informatique/ocaml_ppx.rst b/content/Informatique/ocaml_ppx.rst deleted file mode 100644 index 84e8a5d..0000000 --- a/content/Informatique/ocaml_ppx.rst +++ /dev/null @@ -1,97 +0,0 @@ -.. -*- mode: rst -*- -.. -*- coding: utf-8 -*- - -=========== -ocamlc -ppx -=========== - -:date: 2013-09-13 -:tags: ocaml, Programmation -:summary: |summary| -:logo: static/images/ocaml/recursion_75.jpg - -.. figure:: |filename|/images/ocaml/recursion.jpg - :figwidth: 180 - :figclass: floatright - :alt: Recursivité - - Image : `Gadl`_ (creativecommons_) - -.. _Gadl: http://www.flickr.com/photos/gadl/279433682/ -.. _creativecommons: http://creativecommons.org/licenses/by-sa/2.0/deed.fr - -|summary| - -.. |summary| replace:: - Les langages homoïconiques ont quelque chose de fascinant : pouvoir - représenter le programme sous la forme d'une donnée capable d'être traitée - par le programme nous entraîne dans un jeu de mirroirs qui se réfléchissent - eux-même, et me donne un peu le vertige… La nouvelle version d'OCaml - présente une option de préprocessing qui s'en rapproche. - -Selon `wikipédia`_ un langage homoïconique à la particularité de pouvoir être -représenté comme une donnée du programme. Cela permet de transformer le langage -(lui donner de nouvelles fonctionalités) en utilisant un autre programme fait -dans le même langage. Un programme lisp peut ainsi se modifier durant son -exécution, de la même manière, un fichier xsl peut s'appliquer sur un autre -fichier xsl (puisque xslt_ est décrit sous la forme de fichiers xml)… - -.. _wikipédia: https://fr.wikipedia.org/wiki/Homoiconicit%C3%A9 -.. _xslt: https://fr.wikipedia.org/wiki/Extended_stylesheet_language_transformations - -OCaml 4.01 est sorti ! -====================== - -OCaml vient de sortir en version 4.01, et présente dans ses nouveautés, une -nouvelle option qui s'active à la compilation : - - - :-ppx command: After parsing, pipe the abstract syntax tree through the - preprocessor command. The format of the input and ouput - of the preprocessor are not yet documented. - -Qu'est-ce que cela signifie ? Qu'après avoir interprété le programme source et -construit l'arbre syntaxique du langage, le compilateur appelle un autre -programme en lui transmettant cette représentation en paramètre. À cette étape, -le compilateur a juste vérifié que la syntaxe était `valide`, mais il n'a pas -encore vérifié le programme. - -Le programme appellé peut alors modifier la représentation du code source, et -**doit** donner en retour un programme OCaml valide (si l'on veut que le code -compile…). Cela permet d'étendre la syntaxe du langage en se basant sur des -éléments de syntaxe valides pour mettre en place un `langage dédié`_ (par -exemple). Est-ce que cela fait d'OCaml un langage homoïconique ? Non, car cela -n'est prévu pour être le cœur d'OCaml, mais cela lui donne un aspect -homoïconique et de nouvelles perspectives dans l'évolution du langage. - -Le principal avantage vient du fait que le langage OCaml est TRÈS fortement -typé, et refusera de compiler si une erreur s'est glissée dans la cohérence du -programme. On peut donc modifier le programme sans crainte de provoquer une -erreur dans la structure de celui-ci. - -.. _langage dédié: https://fr.wikipedia.org/wiki/Domain-specific_programming_language - -Des exemples -============ - -OMonad_ est une extension qui donne ainsi à OCaml la possibilité de traiter les -monades selon la syntaxe issue d'Haskell. - -.. _OMonad: http://danmey.org/omonad.html - -`ppx tools`_ est une librairie qui permet de construire sa propre extension, -écrite par Alain Frish, l'auteur à qui l'on doit cette nouvelle option. Il -décrit son besoin et son usage sur son blog_. - -.. _ppx tools: https://github.com/alainfrisch/ppx_tools -.. _blog: http://www.lexifi.com/blog/syntax-extensions-without-camlp4-lets-do-it - -Certe, il était déjà possible de faire des choses `très amusantes`_ avant ça, -mais cela restait encore expérimental. Maintenant, cela devient beaucoup plus -accessible. Je ne connais pas beaucoup de langages qui poussent aussi loin la -possibilité de modifier le compilateur pour l'adapter à ses besoins, et rien -que pour ça, je trouve ça fun ! |:-)| - -.. _très amusantes: https://bitbucket.org/camlspotter/compiler-libs-hack - -.. |:-)| image:: |filename|/images/icons/face-smile.png |