Муравей (или NAnt) в Lisp

Чтобы рассчитать значение свободной памяти с помощью SAR, используйте следующую формулу:

kbmemfree + kbbuffers + kbcached = actual free memory on the system

Используя ваш пример:

616552 + 245368 + 2174816 = 3036736KB

Это около 2,89 ГБ свободной памяти.

Я полагаю, что затем вы можете вычесть из общего объема памяти, доступной для использования.

6
задан Daniel 21 August 2014 в 16:43
поделиться

4 ответа

Ant - это программа, которая интерпретирует команды, написанные на некотором языке XML. Вы можете, как упомянул Джастинхдж в своем ответе, использовать некоторый синтаксический анализатор XML (например, упомянутый XMLisp) и преобразовать описание XML в некоторые данные Lisp, а затем написать дополнительный код на Lisp. Вам также необходимо переопределить некоторые из интерпретации Ant.

Большая часть примитивного материала в Ant не нужна в Lisp. Некоторые файловые операции встроены в Lisp (delete-file, rename-file, probe-file, ...). Некоторые отсутствуют и должны быть реализованы - в качестве альтернативы вы можете использовать одну из существующих библиотек. Также обратите внимание, что вы можете ЗАГРУЗИТЬ файлы Lisp в Lisp и выполнять код - есть также REPL - так что он уже поставляется с интерактивным интерфейсом (в отличие от Java).

Системы сборки более высокого уровня в Common Lisp обычно реализуют абстракцию под названием ' SYSTEM '. Есть несколько из них. ASDF является популярным выбором, но есть и другие. Система имеет подсистемы и файлы. Система также имеет несколько вариантов. У его компонентов также есть опции. Система имеет либо структурное описание компонентов, либо описание зависимостей, либо описание видов «действий» и их зависимостей. Обычно эти вещи реализуются объектно-ориентированным способом, и вы можете реализовать «действия» в виде лисповских (универсальных) функций. Lisp также предоставляет такие функции, как COMPILE-FILE, которые будут использовать компилятор Lisp для компиляции файла. Если ваш код имеет, скажем, C-файлы - вам нужно вызывать C-компилятор - обычно через некоторую специфическую для реализации функцию, которая позволяет вызывать внешние программы (здесь C-компилятор).

Как упоминалось в dmitry-vk, ASDF популярный выбор. LispWorks предоставляет Common Defsystem . Allegro CL имеет свою собственную DEFSYSTEM. Его руководство DEFSYSTEM также описывает, как его расширить.

Все решения Lisp используют какой-то синтаксис Lisp (не синтаксис XML), обычно реализуемый макросом для описания система. Когда это считывается в Lisp, оно превращается в представление данных - часто с экземплярами CLOS для системы, модулей и т. Д. Затем действия также являются функциями Lisp. Затем некоторые функции более высокого порядка проходят по графу / дереву компонента и выполняют необходимые действия.

12
ответ дан 8 December 2019 в 13:02
поделиться

Предстоящая книга Стюарта Хэллоуэя Программирование Clojure проходит конструкцию Lancet по всей книге в качестве примера приложения. Lancet - это система сборки Clojure, которая (опционально) интегрируется напрямую с Ant. Исходный код и примеры доступны .

Если все, что вы хотите сделать, это сгенерировать файлы Ant XML с использованием кода на Лиспе, вы можете использовать что-то вроде clj-html для Clojure или CL-WHO для Common Lisp. Генерация XML из Lisp s-exps - это весело и легко.

4
ответ дан 8 December 2019 в 13:02
поделиться

ASDF Common Lisp (еще одно средство определения системы) аналогично Make / Ant (но не полный аналог - это нацелены на создание программ lisp, а не универсальных систем, таких как make или ant). Он расширяется с помощью кода на Лиспе (системы подклассов, компоненты, операции добавления в системы). Например, существует расширение asdf-ecs, которое позволяет включать (и компилировать) исходные файлы C в систему.

1
ответ дан 8 December 2019 в 13:02
поделиться

Возможно, вы могли бы определить вещи в lisp и преобразовать их в XML в тот момент, когда вы передадите их в NAnt.

Что-то вроде XMLisp облегчает переход от одного представления к другому и обратно.

Правка: На самом деле, xml-emitter будет иметь больше смысла.

1
ответ дан 8 December 2019 в 13:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: