Рисование деревьев в Common Lisp

Этот вопрос, вероятно, имеет смущающий простой ответ, но есть ли правильный способ форматировать/рисовать деревья в Common Lisp? Я пробовал несколько книг, а также поиск в googling, но проблема, похоже, падает между трещинами поисковых запросов.

Спасибо заранее!

Ответы

Ответ 1

Какие деревья вы хотите нарисовать?

SDRAW рисует конструкции ячеек cons на терминале. Похожее: Рисовать дерево древа.

Если у вас McCLIM, CLIM или Lisp Machine, вы можете вызвать функцию CLIM CLIM: FORMAT-GRAPH-FROM-ROOT или CLIM: FORMAT-GRAPH-FROM-ROOTS.

Если вы используете LispWorks, есть панель .

Если вы хотите рисовать растения, используйте этот: L- Lisp.

plant drawing

Ответ 3

Если вы не найдете лучшего решения, я бы склонялся к выпуску .dot файла, а затем подавал его на один из Graphviz (например, точка). Формат файла очень прост, и инструменты могут генерировать различные форматы, включая PNG, SVG, PostScript и даже карты изображений (для создания кликабельных графиков на веб-страницах).

Этот подход, вероятно, работает только для вас, если вы хотите, чтобы эти графики были для вашего собственного использования (например: отладка), или вы генерируете их на сервере. Вызов отдельного инструмента в клиентском приложении может иметь проблемы с использованием и/или лицензированием.

Это не просто общее решение lisp, но я использовал этот подход с нескольких языков в прошлом.

Ответ 4

Я использовал lisp2dot (Awk script, который генерирует команды Dot) в последние годы в приложениях GP, но в настоящее время он не похоже, работают. Каждый раз, когда я кормлю его действительным выражением Lisp, он возвращает странные файлы Dot с полными бессмысленными сообщениями об ошибках. Тем не менее, стоит упомянуть.