Pregunta

Después de la lectura de la Práctica Común de Lisp finalmente entendí cuál es la gran cosa acerca de las macros fue, y he estado buscando un lenguaje para el .NETO de la plataforma que apoya esto.Hay algunos dialectos de lisp para .La RED, pero de lo que he sido capaz de reunir todos son muy beta o abandonados.Recientemente, mi interés se ha despertado por Clojure, pero es para la plataforma java y aunque probablemente podría utilizar ikvm no se sienten integradas.Sobre todo cuando quieres hacer cosas como WPF.

Recientemente he estado escuchando rumores sobre F#, traté de mirar en la documentación, si yo pudiera encontrar nada acerca de la compatibilidad de macro, pero no lo he encontrado.Así que, ¿alguien sabe?

Gracias :)

¿Fue útil?

Solución

Así, F# se basa en OCaml y OCaml tiene un lugar amplia macro sistema.Dada la semántica y sintáctica de las similitudes de F# y OCaml usted puede ser capaz de puerto a través de la Ocaml macro sistema a F#.

Otros que el robo de Ocaml del macro sistema que no me he enterado de una lata de macro sistema de F#.

Otros consejos

Nemerle, en http://nemerle.org/ , es un .NET lenguaje (también el apoyo a mono) que soporta una gran cantidad de de la programación funcional paradigma mientras se alojan visualmente cerca de C#.Se tiene una amplia compatibilidad de macro.

Nope.No hay macros para F#.

Has mirado en Boo?Mientras que Boo no tiene macros, se ha abierto un compilador de tubería, que es una buena alternativa para macros para sintáctica metaprogramación.

[EDITAR] Como se señaló en los comentarios, Boo ¿ tiene macros ahora.

pero bueno horrores de la sintaxis en los ocaml ejemplos se ve oscuro

Allí se está ejecutando en el mismo fundamentales sintáctica trade-off que ver con Lisp.Si desea que el poder de lisp, como las macros, tienden a terminar con lisp-como la sintaxis del lenguaje, o bien la macro sintaxis es muy diferente de la sintaxis normal...nada de malo con cualquiera de los enfoques, sólo diferentes opciones

Pensé debo señalar que actualmente existe una muy activo .NET/Mono puerto de Clojure.Clojure apoya LISP estilo de macros como se señaló en la pregunta.

Como otros han dicho, no admite macros en F# en este momento (finales de 2010).

Recientemente he estado escuchando rumores sobre F#, traté de mirar en la documentación, si yo pudiera encontrar nada acerca de la compatibilidad de macro, pero no lo he encontrado.Así que, ¿alguien sabe?

F# no soporta macros, y es poco probable que alguna vez.

Cómo sobre el uso de F# citas?

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

Que puede ser al revés de lo que usted quiere, pero qué sabe usted acerca de RDNZL?Es un foerign la función de interfaz (FFI) que te permite llamar .RED de bibliotecas de su código Lisp.

Ellos son la mayoría, probablemente, mucho menos madura que la de cualquier Common Lisp o Scheme aplicación, pero hay dialectos de Lisp para .NET: L# y DotLisp.

Hay dos activamente desarrollado Balbucea para .net

IronScheme - DLR esquema basado en la aplicación

Xronos - DLR basado en el puerto de clojure

Actualmente estoy investigando la posibilidad de meta-programación en F#.Si queremos definir macros como plantilla de texto que se expande en el código, a continuación, hay dos evidente enfoques:

  1. Plantillas T4.No hay aplicación para F#: https://github.com/kerams/Templatus

  2. He visto en algún lugar de la invocación de F# a partir de cadenas en la asamblea, independiente y, a continuación, la carga de la asamblea.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top