aboutsummaryrefslogtreecommitdiff
path: root/content/Informatique/2013-09-13-ocaml_ppx.rst
diff options
context:
space:
mode:
Diffstat (limited to 'content/Informatique/2013-09-13-ocaml_ppx.rst')
-rw-r--r--content/Informatique/2013-09-13-ocaml_ppx.rst97
1 files changed, 0 insertions, 97 deletions
diff --git a/content/Informatique/2013-09-13-ocaml_ppx.rst b/content/Informatique/2013-09-13-ocaml_ppx.rst
deleted file mode 100644
index ef0b9c2..0000000
--- a/content/Informatique/2013-09-13-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: /images/ocaml/recursion_75.jpg
-
-.. figure:: {static}/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:: {static}/images/icons/face-smile.png