summaryrefslogtreecommitdiff
path: root/content/Informatique
diff options
context:
/div>
+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