Подтвердить что ты не робот

Какая самая лучшая lisp/схема для unix-скриптов?

Название довольно много говорит обо всем. Я использую clojure для своих крупных проектов, но это не очень хороший язык сценариев, потому что jvm имеет медленный запуск и не очень хорошо взаимодействует с некоторыми событиями unixy. Поэтому я ищу lisp, который будет хорошо работать как язык сценариев, например, имея хороший интерфейс для управления процессами unix, легко использовать такие вещи, как async io и т.д.

4b9b3361

Ответ 1

Scsh (это означает "Scheme shell" ) можно получить в http://www.scsh.net. Это "вариант схемы 48 (новая система технологий R5RS для новых технологий)... предназначенная для написания реальных автономных программ Unix и сценариев оболочки".

Хорошее введение в системное администрирование можно найти в http://www.theillien.com/Sys_Admin_v12/html/v11/i01/a2.htm.

Ответ 2

Racket - действительно хорошая реализация схемы. Его довольно мощный. Одна из его разработок - разработка веб-сервера с нуля.

Ответ 3

Широкий диапазон общих инструментов unix имеет привязки для Guile. Если это ваша цель автоматизировать любой из этих инструментов, это может быть приятным местом для поиска.

Ответ 5

CLISP, реализация Common Lisp, полезна для сценариев Unix.

CLISP имеет множество расширений, которые делают его полезным для сценариев: поддержка Unicode, регулярные выражения, различные параметры командной строки, потоки сокетов, каналы,...

Кроме того, CLISP имеет относительно небольшую площадь, написан на C для переносимости и быстро запускается - для общего Lisp.

Ответ 6

Eshell с Elisp для интерактивного использования:

"Eshell способен вызывать почти любую функцию elisp, загруженную в Emacs. Такая гибкость не имеет себе равных, нет никаких оболочек, способных приблизить то, что может сделать Eshell. Фактически эта функциональность сильно используется (и поощряется! ) от Eshell. Если вы хотите открыть файл foobar.txt в Emacs, вы просто вызываете find файл foobar.txt, и Eshell отобразит это в elisp-вызов (find-file" foobar.txt ") и откройте файл для вас."

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

Ответ 7

Я несколько раз сталкивался с этой страницей, пытаясь найти хороший способ переноса каких-то все более-менее сильных сценариев bash на более понятный язык. Поскольку эти скрипты уже вызывали несколько скриптов Racket, имело смысл удалить слой косвенности и использовать Racket для всего.

После некоторого поиска я наткнулся на shell-pipeline пакет для Racket. Из документации:

Эта библиотека упрощает работу с коннекторами внешних программ и функций ракетки в стиле unix. Вы можете писать так же просто, как (run-pipeline '(cat /etc/passwd) '(grep root) '(cut -d : -f 1)), который будет печатать "root\n" в stdout (в системах unix) и вернет 0. Чтобы получить вывод в виде строки, используйте run-pipeline/out таким же образом. Вы также можете использовать функции ракетки в конвейере. Если у вас есть реализация racket grep под названием my-grep, вы можете сделать (run-pipeline '(cat /etc/passwd) `(,my-grep root) '(cut -d : -f 1)), чтобы получить те же результаты. Таким образом, вы можете писать всевозможные функции фильтрации в Racket, а не использовать команды оболочки.