Forum Programmation.autre Recherche d'un langage dit fonctionnel et homo-iconique.

Posté par  (site web personnel) .
Étiquettes : aucune
1
8
avr.
2012

Bonjour,

Ça fait quelques temps que je regardais Haskell, un langage dit fonctionnel pur et qui possède des caractéristiques qui me plaisent vraiment. Cependant, il ne présente pas la propriété d'homoiconicité.

Pour cela, on va me dire d'aller voir du côté de la famille LISP et je dis pourquoi pas.
Mais voilà, j'ai déjà fait un peu de Common Lisp et j'ai eu une mauvaise impression quant aux différentes bibliothèques plus (surtout moins) développés, encore active ou pas…
Pour les interpréteurs, c'est un peu pareil. Ce n'est pas un langage purement fonctionnel mais c'est un moindre mal.

J'ai vu qu'un projet, Liskell, s'est intéressé à la fusion de la syntaxe LIPS pour écrire de l'Haskell mais je ne sais pas trop s'il est encore actif et il ne semble pas complet. Je ne suis pas certain qu'il soit homoiconique non plus.

Je voudrais ainsi savoir ce que vous me conseilleriez comme langage de programmation principalement axé sur le paradigme fonctionnel, typage fort en option, homoiconique et qui a de bonnes bibliothèques (web, graphiques…)? (Clojure ne m'intéresse qu'à moitié grâce à la JVM derrière…)

  • # Erlang

    Posté par  . Évalué à 2.

    Tout est dans le titre.

    Il n'y a pas de structure de données complexe en erlang. Si tu prend les array par exemple, c'est juste un tuple avec un atome « array » et une liste qui représente l'array. (Représentation {array, [item1, item2, item3]}). Si j'ai bien compris c'est ce que tu cherches.

    Wings 3D est développé en erlang, ainsi que Yaws. Il y a nitrogen comme framework web erlang, mais je ne l'ai jamais testé ; pour faire du web avec erlang, jette un œil ici.

    En plus erlang permet nativement de faire de la programmation concurrente ainsi que des application distribuées/réparties.

    Knowing the syntax of Java does not make someone a software engineer.

    • [^] # Re: Erlang

      Posté par  (site web personnel) . Évalué à 2.

      J'aurais bien aimé qu'il soit aussi homoiconique, ce qui n'est pas le cas…

      • [^] # Re: Erlang

        Posté par  . Évalué à 2.

        Tu veux pas nous dire pourquoi tu cherches un langage homoiconique? J'ai essayé de comprendre ce que c'était, j'ai presque réussi, mais ça ne cadre pas du tout avec le genre de fonctionnalité qu'un utilisateur pourrait réclamer.

        • [^] # Re: Erlang

          Posté par  (site web personnel) . Évalué à 2.

          En gros, c'est une propriété qui facilite grandement l'écriture de code par du code. (un programme qui écrit un autre programme (méta-programmation)).

      • [^] # Re: Erlang

        Posté par  . Évalué à 2.

        Et rebol (indiqué dans ton lien) ?
        Je n'ai jamais vraiment pratiqué (rebuté par le modèle commercial), mais il semble correspondre à ton besoin. Ceci dit je ne suis pas sur qu'il soit fonctionnel pur.

    • [^] # Re: Erlang

      Posté par  . Évalué à 10.

      attention avoir un string dans l'array peut irriter.

  • # Scheme/Guile ?

    Posté par  (site web personnel) . Évalué à 1.

    J'y connais pas grand-chose sur le sujet, du coup je dis peut-être une grosse connerie, mais est-ce qu'utiliser Scheme/Guile, ça permet pas d'accéder à un peu plus de bibliothéques qu'en Clisp, avec une syntaxe similaire ? Bon, je sais pas si c'est encore très vivant, mais il me semble que la dernière fois que j'avais regardé Guile, il y avait au moins quelques bindings…

  • # clojure-py

    Posté par  . Évalué à 2.

    Il y a une implémentation de Clojure sur CPython2.

    Du coup, les qualités de Clojure et la pelletée de bibliothèques de Python !

    https://github.com/halgari/clojure-py

    Le projet est encore jeune, mais c'est très prometteur.

  • # Julia?

    Posté par  . Évalué à 2.

    Homo-iconique et typage fort en option: http://linuxfr.org/news/version-1-0-de-julia

  • # OCAML !

    Posté par  . Évalué à 1.

    Surprenant que personne n'en ai parlé, mais notre langage fonctionnel national est homomachin chose, c'est même quelque chose d'assez courant (cf la merveilleuse lib lwt qui change la manière de penser la prog concurrente).

    Donc l'AST d'ocaml peut-être manipulé directement avec ocaml P4 comme le montre ce tutoriel: http://caml.inria.fr/pub/docs/tutorial-camlp4/tutorial001.html

    Je recommanderais aussi fortement l'usage de Batteries Included qui m'a fait gagner du temps plus d'une fois.

  • # Langages XML

    Posté par  . Évalué à 1.

    Je ne te conseille absolument pas de les utiliser à moins que tu ais des besoins spécifiques, vu que tu sembles chercher quelque chose d'assez généraliste, mais il existe différents langages de programmation basés sur une syntaxe XML, qui sont fait pour manipuler du XML (entre autres), donc homoiconiques, et donc « faire du web ». Par exemple, XSLT et RefleX.

    • [^] # Re: Langages XML

      Posté par  . Évalué à 2.

      Tiens oui, homoiconique et fonctionnel ça correspond bien à XSLT, un des langages les plus pourris que j'ai jamais vu (si, si, le langage que j'ai du utiliser avec des noms de variable restreint a 1 caractère était plus lisible).

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.