Mit Lisp in C#
Ist, wie viele Menschen darauf hingewiesen, in diese Frage, Lisp ist meist als eine Lernerfahrung. Trotzdem wäre es toll, wenn ich könnte irgendwie verwenden mein Lisp-algorithmen und kombinieren Sie mit meinem C# - Programme.
Im college meine profs nie konnte mir sagen, wie mein Lisp-Routinen in einem Programm (Nein, nicht das schreiben eines GUI in Lisp, danke).
Also, wie kann ich?
InformationsquelleAutor Boris Callens | 2008-09-16
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie diese .Net-Implementierungen von Lisp:
InformationsquelleAutor jfs
Clojure ist ein Lisp-1, zusammengestellt on-the-fly zu Java-bytecode, was zu einer sehr guten Laufzeit-performance. Sie können Clojure und cross-kompilieren Sie es in einem .NET assembly mit IKVM's ikvmc. Natürlich, wenn verwendet .NET, Clojure glücklich generiert .NETTO-IL, was zu der gleichen Art von compiled-code-performance, die Sie erwarten können, wenn Sie es auf einer JVM.
InformationsquelleAutor cemerick
Wenn es nur die Routinen, die Sie verwenden möchten, könnten Sie versuchen, LSharp, die können Sie haben Lisp-Ausdrücke .NET:
http://www.lsharp.org/
Anders herum (mit .NET von Lisp) wäre RDNZL:
http://www.weitz.de/rdnzl/
InformationsquelleAutor Michiel Borkent
Den .Net 1.1 SDK enthält die LISP-compiler Beispiel. Siehe SDK\v1.1\Tool Developers Guide\Samples\clisp
InformationsquelleAutor Lars Truijens
Ich weiß, das ist eine wirklich alte Frage. Aber ich werde versuchen Sie zu beantworten, aus meiner eigenen Erfahrung und Perspektive.
Denen wie uns, die Liebe, die Reinheit und Eleganz und Einfachheit von Scheme/Lisp, ich hoffe, das gibt Ihnen etwas Ermutigung und inspiration, wie Sie sehr nützlich sein kann in der tatsächlichen Produktion 🙂
Ich habe vor kurzem open-Source-ein-Schema-wie-interpreter von der Arbeit genannt schemy, geschrieben in C# (~1500 Zeile code). Und hier ist die motivation und wie es sinnvoll ist -
Ohne allzu sehr ins detail, ich war der Aufbau einer web-API-server, dessen request handling logic gewünscht ist, werden plug-und-spielen von anderen Entwicklern/Daten-Wissenschaftler. Es war eine klare Nachfrage nach Trennung der Anliegen - der server kümmert sich nicht viel über das request handling logic, aber es muss wissen, welche Anforderungen Sie bewältigen kann, und wo Sie zu finden und laden die Logik für die Handler.
So, anstatt Handler-Implementierung in der server-Anwendung, der server stellt nur wiederverwendbare "Bausteine", die miteinander verkettet werden können, basierend auf einigen Kriterien und Logik bilden eine pipeline, D. H., Handler definiert über Konfiguration. Wir haben versucht, JSON/XML zu beschreiben, wie eine pipeline und merkte schnell, dass ich war im Grunde Aufbau eines abstract syntax tree parser.
Dafür war, als ich erkannte, das war eine Nachfrage nach einer leichten, s-expression-basierte kleine Sprache. Deshalb ich implementiert die integrierbaren schemy Dolmetscher.
Legte ich eine Beispiel-command-handling-Anwendung hier, die fängt die Essenz der design-Philosophie für den web-server, den ich oben erwähnt. Es funktioniert etwa so:
Es reicht ein embedded Schemy interpreter mit einigen Funktionen implementiert
in C#.
Findet es
.ss
Skripts definiert einen Befehl pipeline-Verarbeitung durch die Verwendung vondiese implementierten Funktionen.
Den server findet und weiterhin die komponiert pipeline nach einem Drehbuch von
achten Sie auf das symbol
EXECUTE
was sollte der TypFunc<object, object>
.Wenn ein Befehl, der die Anfrage kommt, ruft einfach die entsprechende
Kommando-Prozessor (der definiert wird durch
EXECUTE
), und Antworten mit derErgebnis.
Schließlich, hier ist ein komplexeres Beispiel-Skript, dass eine online-man-page-lookup über TCP-command-server:
Mit diesem script geladen werden durch den Befehl server, TCP-client können Befehle
man <unix_command>
auf dem server:In anderen Worten, Fragen Sie Ihren Benutzern zu schreiben, LISP, um die Interaktion mit der C# - app scheint wie eine höhere Erwartung als zu Fragen, Ihnen zu schreiben, in der .NET-Sprache Ihrer Wahl, und nicht mehr flexibel entweder, wenn das ganze Programm ist geladen und ausgeführt werden. Ich habe versucht, dieses problem zu lösen, für eine lange Zeit ohne eine gute balance gefunden.
InformationsquelleAutor KFL
Vielleicht sollten Sie einen Blick in L#. Ich weiß nicht, ob es das ist, was Sie suchen, (noch nicht berührte Lisp-seit-Universität), aber es könnte sich lohnen zu prüfen.
http://www.lsharp.org/
InformationsquelleAutor Patrik Svensson
Gibt es auch DotLisp.
InformationsquelleAutor Mark Hurd