- CIEL es un Lisp extendido basado 100% en Common Lisp, y se presenta con una configuración de tipo “batteries included” que incluye herramientas básicas
- Los scripts se ejecutan con el shebang
#!/usr/bin/env ciel, y permiten usar directamente lectura de JSON y HTTP GET desde código Lisp
- El ejemplo llama con
http:get a https://fakestoreapi.com/products?limit=5, luego lee la respuesta con json:read-json y la muestra con print
- El ejemplo de ejecución
./myscript.lisp muestra un flujo en el que un script de CIEL se maneja como un ejecutable normal
- El resto de la documentación web requiere JavaScript, y para verla sin JavaScript hay que revisar el repositorio de GitHub
Naturaleza básica de CIEL
- CIEL se presenta como un “Lisp extendido”
-
Basado en Common Lisp
- Está basado 100% en Common Lisp
- Se distingue por una configuración batteries included que incorpora herramientas básicas
Ejemplo de ejecución de script
- El código de ejemplo usa el ejecutable
ciel como shebang
#!/usr/bin/env ciel
(print
(json:read-json
(http:get "https://fakestoreapi.com/products?limit=5")))
- Envía una solicitud HTTP con
http:get, luego lee el JSON de la respuesta con json:read-json y lo imprime con print
- El comando de ejecución es el siguiente
$ ./myscript.lisp
Acceso a la documentación y al repositorio
- El enlace del proyecto está en GitHub
- El resto de la documentación web requiere JavaScript, y si no se puede usar JavaScript, se indica consultar el repositorio de GitHub
1 comentarios
Opiniones de Hacker News
Que componentes estándar bien documentados vengan agrupados para poder usarse de inmediato como si fueran parte del lenguaje central, e incluso tengan un nombre atractivo, es realmente importante.
Me gusta, y parece que podría convertirse en un nuevo objetivo estándar. Ahora solo le falta una buena mascota o logo.
Me gusta el enfoque. Esperaba “otro Lisp más”, que habría sido interesante, pero no algo que quisiera usar de inmediato.
Extender y mejorar lo que ya existe puede ser más difícil y menos divertido que empezar desde cero, pero es mucho más valioso. Ya uso Common Lisp, y esto parece reducir un poco esas peculiaridades raras, sobre todo para principiantes o proyectos pequeños.
Cada vez que se habla de un Lisp rápido y cómodo, me dan ganas de mencionar Joker(https://github.com/candid82/joker).
Es una sintaxis de Clojure implementada en Go; no tengo relación con el proyecto, pero me parece excelente. El ejemplo de CIEL escrito en Joker sería
(prn {:a 1 :b 2 :c 3}), y el Gist para descargar, instalar y ejecutar está en https://gist.github.com/lsh-0/f7df23777ef35a8cc3d85e1dcbf0eb....La ejecución completa del script tardó 2.1 segundos, y la ejecución del ejemplo en sí tardó 0.007 segundos.
Me alegra ver que el enfoque que tomó Babashka(https://babashka.org/) ahora también llega al mundo de Common Lisp.
En Safari me aparece la misma advertencia de Javascript. No tengo ninguna extensión activada.
Lo revisé en Chrome y, aparte de eso, se ve justo como algo que querría usar. La biblioteca estándar de CL ya se siente un poco sobrecargada, pero si se quiere ir por el enfoque de “baterías incluidas”, faltaban cosas como Alexandria y Bordeaux, así que me gusta esta elección. Le da cierta sensación de “buenas prácticas” o estandarización al ecosistema de CL, que está algo fragmentado.
Excelente. Personalmente uso una imagen con Alexandria, Serapeum, Dexador, Bordeaux Threads y herramientas relacionadas con JSON, así que puede ser útil que exista algo que otras personas usen con un objetivo parecido.
Parece tener más probabilidades de éxito que las propuestas CDR, que tuvieron demasiada discusión, o que el CL21 anterior. También me pregunto si trae muchas reader macros activadas por defecto.
Es porque no se quiere tocar la readtable por defecto. Para ver cómo activar el passthrough de shell en el REPL del editor, mira abajo.
1: https://github.com/Neronus/Clesh
Si aparece un wrapper para compilar el núcleo de ncurses y SDL, quizá algún día lem pueda correr directamente sobre CIEL y tengamos un entorno Lisp de verdad.
https://news.ycombinator.com/item?id=41357409
Parece distinto de Ciel(https://pldb.io/concepts/ciel.html), otro Lisp creado por Ron Garret en 2010. Él también es científico aeroespacial(https://flownet.com/ron/).
¿Se puede compilar fácilmente a un binario? Supongo que se puede usar el método estándar de CL.
Que el
CIEL custom REPLtenga passthrough de shell como!lses una función genial.El autor todavía no lo considera “listo” ni “suficientemente bueno”, pero ha avanzado bastante. También está https://github.com/bradleyjensen/shcl, que es un shell POSIX. Como siempre, hay una lista más amplia en https://github.com/CodyReichert/awesome-cl#shells-shells-int....
Me gustaría agregar el comando
ciel build.Me pregunto si Python es el caso raro en implementaciones de REPL. Solo estoy familiarizado con los REPL de Python y e-lisp.
Ctrl+Z?Parece SBCL con bibliotecas añadidas. El autor, vindarel, está en HN.
Me ahorra mucho tiempo cuando empiezo un proyecto nuevo, cuando tengo que interactuar con el mundo exterior o cuando quiero escribir algo pequeño y subirlo a un servidor sin la complejidad de Python. Por supuesto, Django es difícil de reemplazar, pero también empecé un dashboard automático de BD para tareas CRUD; todavía no es público, pero está en marcha.
He ido integrando CL gradualmente en trabajos para clientes, y CIEL es otra herramienta para ese propósito. Es para usar CL de verdad. Mis proyectos no necesariamente necesitan los superpoderes de CL, pero sí quiero esa potencia para desarrollar, desplegar y monitorear.
Hoy corregí algunos problemas y lancé v0.2: https://github.com/ciel-lang/CIEL/releases/tag/v02. Lo principal es que instalar CIEL debería ser mucho más fácil, especialmente en Mac. Ahora tiene muchas menos dependencias del sistema.
Si todavía es difícil instalarlo en alguna plataforma específica, agradecería que envíen los detalles en un issue. En resumen, espero que CIEL haga que su camino con CL sea más fácil y fluido. No se imaginan cuánto tiempo me tomó descubrir algunas cosas. Ahora ya está preparado y empaquetado aquí :-]