Я использую SBCL, emacs, slime и quicklisp для установки различных пакетов.
Я создаю экземпляр и запускаю приемник hunchentoot вот так,
CL-USER> (hunchentoot:start (make-instance 'hunchentoot:acceptor :port 4242))
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>
Я тестирую, открывая браузер на порту 4242, и он работает нормально.
Затем, чтобы остановить это, я могу скопировать печатное представление и ввести команду, например:
CL-USER> (hunchentoot:stop #<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>)
#<HUNCHENTOOT:ACCEPTOR (host *, port 4242)>
Это работает только с печатным представлением, возвращаемым соответствующим запуском.
Это удивительно для меня. Я думал, что печатное представление было просто возвращенным текстом, предположительно потому, что сам объект не мог быть показан. Таким образом, я подумал, что довольно удобно, что hunchentoot:stop может использовать текстовую строку для поиска объекта. Но затем, поэкспериментировав, я заметил, что должен использовать печатное представление, соответствующее началу, а не какое-то одно. Я также заметил, что когда я навожу указатель мыши на печатное представление, он выделяет весь сегмент. Так что это вовсе не текст, а объект, который на самом деле есть в REPL, и я могу его использовать.
Итак, с одной стороны, то, что возвращается, — это печатное представление, чтобы я мог его видеть, а с другой — это фактический объект, который я могу скопировать и вставить в REPL. Это правильно? Я думаю, это должно быть потому, что я делаю это. Это совершенно удивительно для меня.
Любое объяснение или понимание будет принята с благодарностью.