← All posts tagged Lisp

Забавный фрагмент из Strategy Letter IV:
And your programmers are like, jeez louise, GMail is huge, we can’t port GMail to this stupid NewSDK. We’d have to change every line of code. Heck it’d be a complete rewrite; the whole programming model is upside down and recursive and the portable programming language has more parentheses than even Google can buy. The last line of almost every function consists of a string of 3,296 right parentheses. You have to buy a special editor to count them.

Quicklisp прекрасен, прост в использовании и все сразу завелось. Gtfl поставил посмотреть, в нем деревья видимо буду рисовать для отладки, хоть и не так симпатично выйдет как с graphviz, за то в дереве можно будет сворачивать/разворачивать узлы, отображать дополнительную информацию и все это будет в html, так что и отредактировать будет можно без особых проблем. Было бы просто замечательно прикрутить все это дело так, чтобы можно было пошагово наблюдать изменения в дереве во время работы программы.

После треда #1505392 нашел интересную штуку — martin-loetzsch.de . Как пишет автор: GTFL это графический терминал для common lisp, где клиентом является обычная html-страница, запущенная в браузере. Этот самый GTFL предоставляет механизмы для отправки контента на страницу из лиспа via hunchenhoot и ht-simple-ajax.
Хотел посмотреть, примеры позапускать, но не получается установить.
Как "(asdf-install:install :gtfl)", так и "(asdf-install:install "/full/path/gtfl.tar.gz")" заканчивается так:
"Component "gtfl" not found [Condition of type ASDF:MISSING-COMPONENT]"
Как исправить?

Вопрос может и дурацкий, но все же: можно как-то получить список всех символов и их значения из текущего окружения? Скажем в repl было объявлено несколько функций/макросов, протестировал их, исправил какие-то ошибки, могу ли я теперь увидеть список введенных символов и их определения, чтобы отправить их в файл какой-нибудь?

; внезапно перестало работать
; в *Messages* валится такое:
; Qt: Session management error: Could not open network socket
; kioclient(12285): Session bus not found
; через shell-command пробовал - такая же ерунда. Как быть?
(defun dired-open-externally ()
  "Open the current directory in your OS's file manager."
  (interactive)
  (let ((fileobject (dired-get-file-for-visit)))
    (start-process "dired-external" "*Messages*" "/usr/bin/kde-open" fileobject)))

Решил немного пошатнуть баланс Силы и посмотреть emacs. Хочу прикрутить поиск по qt-документации из emacs.
Если сначала запустить сам ассистант, потом выполнять qt-assistant-search, то все правильно делает. Если к моменту выполнения qt-assistant-search assistant не запущен, то он запускается и начинает обновлять свой индекс по всем файлам справки, что достаточно долго и cpu жрет прилично, и только потом делает setSource. Как избавится от обновления индекса? Код функции под juick-катом.