2010-11-16 15 views
17

El título casi lo dice todo. Yo uso clojure para mis proyectos principales, pero no es un buen lenguaje de scripting porque el jvm tiene un inicio lento y no interactúa bien con algunas cosas no mixtas. Así que estoy buscando un lisp que funcione bien como un lenguaje de scripting, por ejemplo tener una buena interfaz para administrar procesos de Unix, usar fácilmente cosas como async io, etc.¿Cuál es el mejor lisp/esquema para unix scripting?

Respuesta

13

Scsh (significa "Esquema de carcasa") se puede obtener en http://www.scsh.net. Es "una variante de Scheme 48 (un sistema de esquema de nueva tecnología compatible con R5RS) ... diseñado para escribir programas de Unix independientes de la vida real y scripts de shell".

Una buena introducción a la administración del sistema se puede encontrar en http://www.theillien.com/Sys_Admin_v12/html/v11/i01/a2.htm.

+2

Sí, scsh es bueno, en parte porque es específicamente para lo que está diseñado. Sin embargo, Racket (mencionado en otra respuesta) también es una buena alternativa, porque es tan completo que tiene esencialmente todo el soporte de sistema que tiene scsh. Hubiera dicho scsh inequívocamente antes, pero últimamente he estado usando raqueta más y más para cosas como esta. –

7

Racket es una muy buena implementación de Scheme. Es bastante poderoso. Una de sus presentaciones es desarrollar un servidor web desde cero.

7

Una amplia gama de herramientas comunes de Unix tienen enlaces para Guile. Si es su objetivo automatizar cualquiera de estas herramientas, este podría ser un buen lugar para buscar.

+0

+1 para Guile: tiempo de inicio rápido, módulos decentes (incluido DBD/DBI) y aún desarrollado activamente. También se consideró mzscheme (raqueta), pero fue demasiado lento para comenzar. – minaev

4

CLISP, una implementación de Common Lisp, es útil para la creación de scripts en Unix.

CLISP tiene muchas extensiones que lo hacen útil para secuencias de comandos: soporte Unicode, expresiones regulares, varias opciones de línea de comandos, secuencias de socket, tuberías, ...

Además CLISP tiene una huella relativamente pequeña, está escrito en C para la portabilidad y comienza rápido - para un Common Lisp.

0

Eshell con Elisp para uso interactivo:

"Eshell es capaz de invocar casi cualquier función elisp cargada en Emacs Eso. el tipo de flexibilidad no tiene igual, no hay proyectiles capaces de aproximarse a lo que Eshell puede hacer. acto, esta funcionalidad es muy utilizada (¡y alentada!) por Eshell. Si desea abrir el archivo foobar.txt en Emacs, simplemente invoque find-file foobar.txt y Eshell lo correlacionará con la llamada elisp (find-file "foobar.txt") y abrirá el archivo por usted. "

de http://www.masteringemacs.org/articles/2010/12/13/complete-guide-mastering-eshell/

0

me encontré con esta página un par de veces mientras se busca una buena manera de puerto algunos scripts bash cada vez más unweildy a un lenguaje más sano. Dado que estas secuencias de comandos ya estaban invocando unos guiones de raqueta, que tenía sentido eliminar una capa de direccionamiento indirecto y utilizar raqueta para todo.

Después de algunas búsquedas, me encontré con el paquete shell-pipeline para raqueta. De la documentación:

Esta biblioteca hace que las canalizaciones estilo unix de programas externos y funciones de raqueta sean fáciles. Puede escribir cosas tan simples como (run-pipeline '(cat /etc/passwd) '(grep root) '(cut -d : -f 1)), que imprimirá "root\n" en stdout (en sistemas Unix) y devolverá 0. Para obtener la salida como una cadena, use run-pipeline/out de la misma manera.También puede poner funciones de raqueta en la tubería. Si tiene una implementación de raqueta de grep llamada my-grep, puede hacer (run-pipeline '(cat /etc/passwd) `(,my-grep root) '(cut -d : -f 1)) para obtener los mismos resultados. Por lo tanto, puede escribir todo tipo de funciones de filtro en Racket en lugar de usar comandos de shell.

Cuestiones relacionadas