Вопрос гласит все. Мне интересно, потому что clhs для make-string-input-stream
не указывать, и код примера не показывает закрытие. Но расширение with-input-from-string
действительно закрывает поток.Должен ли я закрывать поток, созданный с помощью строки-ввода-потока
(with-input-from-string (stream "hallo")
)
становится
(LET ((#:STRING1525 "hallo"))
(LET ((STREAM (MAKE-STRING-INPUT-STREAM #:STRING1525 0)))
(MULTIPLE-VALUE-PROG1 (UNWIND-PROTECT (PROGN) (CLOSE STREAM)))))
Будьте осторожны с расширениями макросов, по крайней мере, скажите нам, какую реализацию вы использовали. Ничто в стандарте не требует расширения или аналогичного. Реализация могла бы использовать все внутренние символы, такие как непрозрачные, нестандартные специальные операторы, или встроить тело стандартных функций. – acelent
Я добавил реализацию, используемую в тегах – Sim