Рисование деревьев в 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]()
Ответ 2
Если вы решите пойти с GraphViz, посмотрите http://common-lisp.net/project/cl-graphviz
Ответ 3
Если вы не найдете лучшего решения, я бы склонялся к выпуску .dot файла, а затем подавал его на один из Graphviz (например, точка). Формат файла очень прост, и инструменты могут генерировать различные форматы, включая PNG, SVG, PostScript и даже карты изображений (для создания кликабельных графиков на веб-страницах).
Этот подход, вероятно, работает только для вас, если вы хотите, чтобы эти графики были для вашего собственного использования (например: отладка), или вы генерируете их на сервере. Вызов отдельного инструмента в клиентском приложении может иметь проблемы с использованием и/или лицензированием.
Это не просто общее решение lisp, но я использовал этот подход с нескольких языков в прошлом.
Ответ 4
Я использовал lisp2dot (Awk script, который генерирует команды Dot) в последние годы в приложениях GP, но в настоящее время он не похоже, работают. Каждый раз, когда я кормлю его действительным выражением Lisp, он возвращает странные файлы Dot с полными бессмысленными сообщениями об ошибках. Тем не менее, стоит упомянуть.