Ich möchte eine Lisp-Webanwendung nur zum Spaß schreiben. Ich fand diese Frage über Lisp-Web-Apps aber alle Antworten scheinen so kompliziert zu sein. Wenn man sich die Links in den Antworten ansieht, scheinen die Lösungen wirklich kompliziert zu sein.
Wenn ich nur eine einfache, "Hallo Welt" Lisp Web App möchte, gibt es nicht eine einfache Möglichkeit, es zu tun?
Diese Antwort LOOKS kompliziert, aber ich denke, dass es einfacher wird, eine einfache Lisp-Web-App zu bekommen, als einfach nur die anderen tollen Teile von Lisp zu lernen, also ist es das wahrscheinlich wert.
Es gibt ein paar wirklich großartige Common-Lisp-Bücher mit Intro-zu-Web-App-Kapiteln: Practical Common Lisp und Land von Lisp .
Es gibt ein Kapitel in Land of Lisp, das den Aufbau eines einfachen Web-Servers mit Sockets behandelt. Es ist ziemlich rudimentär, aber ich denke, würde als ein guter Ausgangspunkt für eine "Hallo Welt" Art von Lisp App dienen.
Das Kapitel in Practical Common Lisp ist auf einer höheren Ebene und arbeitet mit einem vollwertigen Server namens Allegro Serve. Es gibt spätere Kapitel, die eine MP3-Streaming-App aufbauen.
Practical Common Lisp ist kostenlos verfügbar, hier ist das Kapitel von Interesse: Ссылка
Ich denke, beide Bücher sind großartige Quellen, um mit Common Lisp anzufangen (als jemand, der gerade erst angefangen hat), obwohl Land of Lisp etwas zugänglicher und lustiger ist, obwohl es einige interessante Probleme wie faule Bewertung und Spielbäume suchen. Praktisches Common Lisp ist mehr ... praktisch, aber das ist nicht wirklich schlecht. Es richtet sich an professionelle Programmierer, daher ist sein Ton nur ein wenig ernster.
Ein Wort der Warnung:
AFAIK Common Lisp hat keine wirklich standardmäßige Art der Netzwerkprogrammierung, also ist dies ein Bereich des Lisp-Lernens, bei dem es zu Problemen kommt, wenn Sie nicht die gleiche Implementierung wie das Buch wählen, das Sie gerade sind Lesen.
Land of Lisp verwendet CLisp durchgehend, aber Sie können SBCL verwenden, wenn Sie diesem Blogpost in der Nähe folgen: Ссылка
Praktisch Common Lisp verwendet Allegro Serve, wie ich bereits sagte, und ich denke, es gibt eine Version von Allegro Lisp, die auf ihrer Website zur Verwendung mit dem Buch verfügbar ist. Sie können jedoch auch Portable Allegro Serve verwenden. Seien Sie vorsichtig, wenn Sie Mac OS X und SBCL (so wie ich) verwenden: Die Thread-Unterstützung von SBCL ist unter OS X experimentell. Wenn Sie diese Route wählen, ist es am besten, Ubuntu in einer VM und dann apt-get install sbcl
zu installieren Ihr Allegro Serve Programmieren dort, wo SBCL-Threads besser unterstützt werden. Vielleicht können einige CL-Assistenten hier weitere Tipps geben. Genau das hat für mich funktioniert.
Für CL-HTTP würde man den Server in Lisp laden und machen:
%Vor%Oben ist eine Response-Funktion . Die Antwortfunktion hat zwei Argumente: eine URL und einen Stream. Die Antwortfunktion fügt die üblichen Antwortheader hinzu und sagt, dass sie "Text" zurückgibt. Innerhalb dieser drucken wir nur eine Zeichenfolge in den Ausgabestrom.
%Vor%Über exportiert eine URL , die mit dem Standardkontext (dem Standardservernamen und -port) zusammengeführt wird. Das #u ist ein Lesemakro zum Erstellen von URL-Objekten. Die URL wird exportiert als: COMPUTED und benötigt daher: RESPONSE-FUNCTION um die Antwort zu berechnen. Wir übergeben die oben definierte Funktion.
Wenn ein Client eine GET-Anfrage mit der URL an diesen Server sendet, ruft er die Antwortfunktion für diese URL auf und liefert einen Ausgabestream.
Was dann diesen Inhalt erzeugt:
%Vor%Das ist es.
PLT Racket ist ein sehr gut ausgestatteter Scheme-Dialekt, der dies ermöglicht. Sie haben ein einfaches Tutorial hier , in dem sie ein kleines CMS entwickeln, und einige Diskussionen über einen Racket-Webserver hier . Wenn ich du wäre, würde ich das versuchen. Ihre "Hallo Welt" sieht so aus:
%Vor%Seht, es ist nicht so schlimm!
(Wenn Clojure als Lisp zählt, gibt es natürlich auch mehrere Webanwendungs-Frameworks in unterschiedlichen Entwicklungsstadien.)
Sehen Sie sich " ein kleines Lisp-Projekt mit quickproject und Quicklisp an " für ein Beispiel, das etwas komplizierter ist als " Hallo Welt ".
Nun, ich bin mir nicht ganz sicher, was Sie unter "Web-App" verstehen. Wenn ich eine dynamische Website zusammenarbeite, arbeite ich normalerweise in einer CGI-Denkweise. Hier ist ein Link zu einem CGI-Setup für Common Lisp Ссылка $ sSHnB ==
Aus einem Grund, von dem ich mir noch nicht sicher bin, scheint sich die meiste Lisp-Webarbeit um einen in Lisp eingebauten Webserver zu zentrieren, anstatt Apache oder IIS in die Lisp-Software zu rufen, um die .lisp-Datei zu parsen.
>Tags und Links lisp common-lisp