Frage

Nach Practical Common Lisp Lesen habe ich endlich verstanden, was die große Sache über Makros war, und ich habe für eine Sprache für die .NET-Plattform suchen, der dies unterstützt. Es gibt ein paar Lisp Dialekte für .NET, aber von dem, was ich in der Lage gewesen, alle sind zu sammeln entweder sehr Beta- oder aufgegeben. Vor kurzem mein Interesse wurde von Clojure ausgelöst, aber es ist für die Java-Plattform und während wahrscheinlich ikvm verwenden könnte es nicht einige integrierte fühlen. Vor allem, wenn Sie Sachen wie WPF zu tun.

Vor kurzem wurde ich hörte Flüstern über F #, habe ich versucht, in der Dokumentation zu sehen, ob ich etwas über Makro-Unterstützung finden konnten, haben sie aber nicht gefunden. So weiß jemand?

Danke:)

War es hilfreich?

Lösung

Nun, F # basierend auf OCaml und OCaml hat ein eher umfangreiches Makrosystem . In Anbetracht der syntaktischen und semantischen Ähnlichkeiten von F # und OCaml Sie F # zu portieren über das Ocaml Makro System in der Lage sein kann.

Anders als Ocaml Makrosystem zu stehlen Ich bin nicht bewusst ein Dose Makro-Systems für F #.

Andere Tipps

Nemerle, unter http://nemerle.org/ , ist eine .NET-Sprache (auch Stütz mono) dass man unterstützt viele der funktionalen Programmierparadigma, während visuell Nähe von C # zu bleiben. Es verfügt über umfangreiche Makro-Unterstützung.

Nein. Kein Makros für F #.

Haben Sie sich unter Boo ? Während Boo-Makros nicht hat, es hat eine offene Compiler-Pipeline, die Makros für die syntaktische metaprogramming eine gute Alternative ist.

[EDIT] Wie in den Kommentaren erwähnt, Boo hat haben Makros jetzt.

aber gute Schrecken die Syntax in diesen ocaml Beispiele sieht dunkel

Es sind Sie in den gleichen grundlegenden syntaktischen Trade-off laufen Sie mit Lisp tun. Wenn Sie die Leistung von Lisp-like-Makros wollen, neigen Sie dazu, entweder mit Lisp-ähnlicher Syntax für die Sprache am Ende, oder auch Ihre Makro-Syntax sieht ganz anders aus Ihrer normalen Syntax ... nichts falsch mit entweder Ansatz, nur unterschiedlichen Entscheidungen

Ich dachte, ich mag darauf hinweisen, dass es jetzt ein ziemlich aktiv .NET / Mono-Port von Clojure . Clojure unterstützt LISP Stil Makros wie in der Frage festgestellt wird.

Wie andere gesagt haben, Makros werden in F # an dieser Stelle unterstützt (Ende 2010).

  

Vor kurzem wurde ich hörte Flüstern über F #, habe ich versucht, in der Dokumentation zu sehen, ob ich etwas über Makro-Unterstützung finden konnten, haben sie aber nicht gefunden. So weiß jemand?

F # unterstützt keine Makros und es ist unwahrscheinlich, dass es jemals wird.

Wie wäre es mit F # Zitate?

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

Das kann der umgekehrt sein als das, was Sie wollen, aber wissen Sie über RDNZL ? Es ist eine foerign Funktions-Schnittstelle (FFI), die Sie aufrufen .NET-Bibliotheken aus dem Lisp-Code ermöglicht.

Sie sind höchstwahrscheinlich viel weniger reif als jede Common Lisp oder Scheme-Implementierung, aber es gibt Lisp Dialekte für .NET: L # und DotLisp .

Es gibt zwei aktiv entwickelt Lisps für .net

Ironscheme - DLR basiertes Schema Implementierung

Xronos - DLR basierte Port von clojure

ich untersuchen derzeit Möglichkeiten der Meta-Programmierung in F #. Wenn wir Makros als Textvorlage definieren, die in den Code erweitert, dann gibt es zwei offensichtliche Ansätze:

  1. T4-Vorlagen. Es ist die Umsetzung für F #: https://github.com/kerams/Templatus

  2. Ich habe irgendwo Aufruf von F # von Strings in separate Baugruppe gesehen und dann der Baugruppe geladen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top