Question

Après avoir lu Practical Common Lisp, j’ai enfin compris l’intérêt des macros et je cherchais un langage compatible avec cette plate-forme .NET. Il existe quelques dialectes lisp pour .NET mais d'après ce que j'ai pu rassembler, ils sont tous très bêta ou abandonnés. Récemment, Clojure a suscité mon intérêt, mais c’est pour la plate-forme java et, bien qu’il puisse probablement utiliser ikvm, il ne semble pas être intégré. Surtout quand vous voulez faire des choses comme WPF.

Récemment, j'ai entendu un murmure à propos de F #. J'ai essayé de consulter la documentation si je pouvais trouver quelque chose à propos de la prise en charge des macros, mais je ne l'ai pas trouvée. Alors, est-ce que quelqu'un sait?

Merci :))

Était-ce utile?

La solution

Eh bien, F # est basé sur OCaml et OCaml a plutôt un système de macros extensif . Compte tenu des similitudes syntaxiques et sémantiques de F # et d'OCaml, vous pourrez peut-être transférer sur le système de macros Ocaml en F #.

À part le vol du système de macros d'Ocaml, je ne connais pas de système de macros préenregistré pour F #.

Autres conseils

Nemerle, sur http://nemerle.org/ , est un langage .NET (prenant également en charge le mono) qui prend en charge une grande partie du paradigme de la programmation fonctionnelle tout en restant visuellement proche de C #. Il prend en charge les macros.

Nope. Pas de macros pour F #.

Avez-vous consulté Boo ? Bien que Boo n'ait pas de macros, il dispose d'un pipeline de compilateur ouvert, qui constitue une bonne alternative aux macros pour la métaprogrammation syntaxique.

[EDIT] Comme indiqué dans les commentaires, Boo a des macros maintenant.

mais bon horreur la syntaxe dans ces exemples ocaml semble obscure

Là, vous rencontrez le même compromis syntaxique fondamental que vous faites avec Lisp. Si vous voulez la puissance des macros ressemblant à lisp, vous avez tendance à adopter une syntaxe semblable à celle de lisp, ou bien votre syntaxe de macro sera assez différente de votre syntaxe habituelle ... rien ne va de mal avec l'une ou l'autre approche, mais des choix différents

Je pensais devoir préciser qu'il existe désormais un port .NET / Mono assez actif sur Clojure . Clojure prend en charge les macros de style LISP comme indiqué dans la question.

Comme d'autres l'ont dit, les macros ne sont pas prises en charge en F # pour le moment (fin 2010).

  

Récemment, j'ai entendu un murmure à propos de F #. J'ai essayé de consulter la documentation si je pouvais trouver quelque chose à propos de la prise en charge des macros, mais je ne l'ai pas trouvée. Alors, est-ce que quelqu'un sait?

F # ne prend pas en charge les macros et il est peu probable que ce soit le cas.

Pourquoi ne pas utiliser les citations F #?

http://tomasp.net/blog/fsquotations.aspx

C’est peut-être l’inverse qui vous convient, mais connaissez-vous RDNZL ? ? C'est une interface foerign-function (FFI) qui vous permet d’appeler des bibliothèques .NET à partir de votre code Lisp.

Ils sont probablement beaucoup moins matures que toute implémentation Common Lisp ou Scheme, mais il existe des dialectes Lisp pour .NET: L # et DotLisp .

Il existe deux Lisps activement développés pour .net

IronScheme - Implémentation de schéma basé sur le DLR

Xronos - Portage du clojure basé sur le DLR

J'étudie actuellement les possibilités de méta-programmation en F #. Si nous définissons les macros en tant que modèle de texte qui se développe en code, il existe deux approches évidentes:

  1. modèles T4. Il existe une implémentation pour F #: https://github.com/kerams/Templatus

  2. J'ai vu quelque part l'invocation de F # de chaînes dans un assemblage séparé, puis le chargement de l'assemblage.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top