- CIEL ist ein zu 100 % auf Common Lisp basierendes erweitertes Lisp und wirbt mit einer „batteries included“-Ausstattung, die grundlegende Werkzeuge mitliefert
- Skripte werden mit dem Shebang
#!/usr/bin/env ciel ausgeführt und können in Lisp-Code direkt JSON lesen und HTTP GET verwenden
- Das Beispiel ruft mit
http:get auf, liest die Antwort mit json:read-json und gibt sie mit print aus
- Das Ausführungsbeispiel
./myscript.lisp zeigt den Ablauf, CIEL-Skripte wie normale ausführbare Dateien zu behandeln
- Für den Rest der Webdokumentation ist JavaScript erforderlich; wer sie ohne JavaScript ansehen möchte, soll das GitHub-Repository prüfen
Grundcharakter von CIEL
- CIEL wird als „erweitertes Lisp“ vorgestellt
-
Auf Common Lisp basierend
- Es basiert zu 100 % auf Common Lisp
- Als Merkmal wird eine batteries included-Ausstattung mit enthaltenen grundlegenden Werkzeugen hervorgehoben
Beispiel für die Skriptausführung
- Der Beispielcode legt den
ciel-Runner per Shebang fest
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
- Er sendet mit
http:get eine HTTP-Anfrage, liest anschließend das Antwort-JSON mit json:read-json und gibt es mit print aus
- Der Ausführungsbefehl lautet wie folgt
$ ./myscript.lisp
Zugriff auf Dokumentation und Repository
- Der Projektlink wird auf GitHub bereitgestellt
- Für den Rest der Webdokumentation ist JavaScript erforderlich; wenn JavaScript nicht verwendet werden kann, gibt es den Hinweis, das GitHub-Repository anzusehen
1 Kommentare
Meinungen auf Hacker News
Es ist wirklich wichtig, dass standardmäßig gut dokumentierte Komponenten so gebündelt werden, dass sie sich direkt wie Teil der Kernsprache nutzen lassen, und dazu noch einen schicken Namen bekommen.
Gefällt mir, und es könnte auch ein neues Standard-Target werden. Jetzt braucht es nur noch ein gutes Maskottchen oder Logo.
Mir gefällt der Ansatz. Ich hatte „noch ein Lisp“ erwartet; das wäre zwar cool gewesen, aber nichts, das ich sofort nutzen wollen würde.
Etwas Bestehendes zu erweitern und zu verbessern kann schwieriger und weniger spaßig sein als ein Neuanfang, ist aber viel wertvoller. Ich nutze bereits Common Lisp, und das hier scheint besonders für Einsteiger oder kleine Projekte ein wenig von dessen eigentümlicher Seltsamkeit zu reduzieren.
Immer wenn von einem schnellen und bequemen Lisp die Rede ist, möchte ich Joker (https://github.com/candid82/joker) erwähnen.
Es ist eine in Go implementierte Clojure-Syntax; ich bin nicht beteiligt, halte es aber für wirklich hervorragend. Das CIEL-Beispiel würde in Joker so aussehen:
(prn {:a 1 :b 2 :c 3}), und ein Gist zum Herunterladen, Installieren und Ausführen ist hier: https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb...Das Ausführen des gesamten Skripts dauerte 2,1 Sekunden, die Ausführung des Beispiels selbst 0,007 Sekunden.
Schön zu sehen, dass der Ansatz von Babashka (https://babashka.org/) nun auch in der Common-Lisp-Welt angekommen ist.
In Safari bekomme ich dieselbe Javascript-Warnung. Erweiterungen sind keine aktiviert.
In Chrome geprüft: Abgesehen davon sieht es genau nach etwas aus, das ich nutzen möchte. Die CL-Standardbibliothek wirkt schon etwas überladen, aber wenn man „Batterien inklusive“ anstrebt, fehlten Dinge wie Alexandria und Bordeaux; diese Auswahl gefällt mir. Sie gibt dem etwas fragmentierten CL-Ökosystem ein Gefühl von „Best Practices“ oder Standardisierung.
Großartig. Persönlich nutze ich ein Image mit Alexandria, Serapeum, Dexador, Bordeaux Threads und JSON-bezogenen Werkzeugen; es könnte praktisch sein, wenn es etwas gibt, das auch andere mit einem ähnlichen Ziel verwenden.
Das wirkt erfolgversprechender als die CDR-Vorschläge, über die übermäßig viel diskutiert wurde, oder das frühere CL21. Ich frage mich auch, ob viele reader macros standardmäßig aktiviert sind.
Der Grund ist, dass ich die readtable nicht standardmäßig anfassen möchte. Wie man im Editor-REPL Shell-Passthrough aktiviert, steht unten.
1: https://github.com/Neronus/Clesh
Wenn es Wrapper zum Bauen von ncurses- und SDL-Cores gäbe, könnte vielleicht eines Tages lem direkt auf CIEL laufen und eine echte Lisp-Umgebung entstehen.
https://news.ycombinator.com/item?id=41357409
Das scheint sich von Ciel (https://pldb.io/concepts/ciel.html), einem anderen Lisp von Ron Garret aus dem Jahr 2010, zu unterscheiden. Er ist außerdem Raketenwissenschaftler (https://flownet.com/ron/).
Lässt es sich einfach zu einem Binary kompilieren? Vermutlich nutzt man einfach den Standardweg von CL.
Dass es im
CIEL custom REPLShell-Passthrough wie!lsgibt, ist ein cooles Feature.Der Autor hält sie noch nicht für „bereit“ oder „gut genug“, aber sie ist schon recht weit. Es gibt auch eine POSIX-Shell: https://github.com/bradleyjensen/shcl. Wie immer gibt es eine längere Liste unter https://github.com/CodyReichert/awesome-cl#shells-shells-int....
Ich möchte einen Befehl
ciel buildhinzufügen.Ich frage mich, ob Python bei REPL-Implementierungen der Sonderfall ist. Mit REPLs kenne ich mich nur bei Python und e-lisp aus.
Ctrl+Z?Sieht aus wie SBCL plus zusätzliche Bibliotheken. Der Autor, vindarel, ist auf HN.
Wenn ich ein neues Projekt starte, mit der Außenwelt interagieren muss oder etwas Kleines ohne die Komplexität von Python schreiben und auf einen Server stellen möchte, spart es mir viel Zeit. Django ist natürlich schwer zu ersetzen, aber ich habe auch ein automatisches DB-Dashboard für CRUD-Aufgaben begonnen; es ist noch nicht öffentlich, aber in Arbeit.
Ich habe CL schrittweise in Kundenprojekte integriert, und CIEL ist ein weiteres Mittel zu diesem Zweck. Es geht darum, CL tatsächlich zu verwenden. Meine Projekte brauchen nicht unbedingt die Superkräfte von CL, aber für Entwicklung, Deployment und Monitoring will ich diese Stärke haben.
Heute habe ich einige Probleme behoben und v0.2 veröffentlicht: https://github.com/ciel-lang/CIEL/releases/tag/v02. Der Kernpunkt ist, dass die Installation von CIEL, besonders auf dem Mac, deutlich einfacher werden sollte. Es gibt jetzt viel weniger Systemabhängigkeiten.
Falls die Installation auf bestimmten Plattformen weiterhin schwierig ist, schickt bitte Details in ein Issue. Kurz gesagt: Ich hoffe, CIEL macht eure CL-Reise einfacher und reibungsloser. Ihr könnt euch nicht vorstellen, wie lange es gedauert hat, manche Dinge herauszufinden. Jetzt ist es hier vorbereitet und paketiert :-]