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

Как мне начать разбиение кода Lisp на несколько исходных файлов?

В настоящее время все, что мне удается, укладывается в один исходный файл и на удивление маленькое. Как вы решаете, сколько и что нужно разделить на отдельные файлы?

С Java легко решить, что идет в одном файле (решение уже сделано для вас), но в Lisp я нахожу, что я пишу много маленьких функций, которые строятся друг на друге, и становится трудно решить, что, если что-то должно быть разделено. Поскольку я занимаюсь большими проектами в Lisp, было бы неплохо не изобретать колесо, но я не могу найти много конкретной информации в Интернете об этом.

Можете ли вы поделиться некоторыми стратегиями для работы с более крупными проектами в Lisp или указать мне на некоторые ресурсы, которые касаются этого?

4b9b3361

Ответ 1

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

Несколько подсказок:

  • Существует несколько инструментов для управления зависимостями исходного файла и обеспечения таких действий, как компиляция, загрузка, компиляция и загрузка и другие. ASDF один, но есть и другие.

  • Вам нужен один файл для описания зависимостей. Назовите его так, чтобы его можно было узнать.

  • Вам может понадобиться файл для определения одного или нескольких пакетов.

  • Возможно, вам потребуется поместить специфические функции реализации в свои собственные файлы.

  • перемещать большие объемы данных конфигурации в свои файлы

  • общие утилиты должны быть в другом файле

  • Макросы должны быть определены перед использованием. Другие файлы зависят от этого файла и должны автоматически перекомпилироваться при изменении определения макроса.

  • объединить функциональность в файл, если он логически связан. В программе для рисования: все функции рисования, все команды интерфейса пользователя, сохранение данных в файлы, печать,...

  • не волнует размер файла. Исходные файлы Lisp могут быть большими. Иногда 100к.

  • перемещение по файлам поддерживается средой разработки. M-. по символу находит свой источник.

  • убедитесь, что вы можете перезагрузить файл, без необходимости перезапускать весь Lisp.

  • Common Lisp предоставляет LOAD и COMPILE-FILE как функции. Вы можете использовать эти функции в ваших собственных файлах.

Ответ 3

Если вы используете Common Lisp, ASDF - это популярный способ указать системы. Он обрабатывает зависимости порядка загрузки между исходными файлами (и намного больше).