Я довольно новичок в Lisp, и я столкнулся с проблемой печати. У меня есть одна функция, которая выполняет печать на стандартный вывод (между прочим). Затем я хочу запустить эту функцию через другую функцию, где она все еще работает одинаково, но вместо этого ничего не печатается на стандартный вывод.Подавление вывода из функции печати в Lisp
Вот простой пример того, что я имею в виду. У меня есть следующие две функции, описанные в:
(defun does-printing()
(print "This goes to standard output."))
(defun run-other-function (function)
(funcall function)
(values))
Вот капать из того, что происходит, когда я запускаю это,
;; Dribble of #<IO TERMINAL-STREAM> started on 2014-10-05 21:49:49.
#<OUTPUT BUFFERED FILE-STREAM CHARACTER #P"example.out">
[7]> (run-other-function #'does-printing)
"This goes to standard output."
[8]> (dribble)
;; Dribble of #<IO TERMINAL-STREAM> finished on 2014-10-05 21:50:09.
Обратите внимание, что функция печати по-прежнему выводит на стандартный вывод. Он хотел бы как-то подавить эту печать при запуске - печать через run-other-function. Я пробовал много разных вариантов формулировки своей проблемы при поиске решений, но ничего не получается по тому, что я хотел бы сделать.
Как просто добавить необязательный аргумент «print-output» to do-printing? –
Мне нравится это решение для некоторых ситуаций, но оно не будет работать для моих нужд. Я писал основную единую тестовую структуру для myseltfjust, чтобы получить некоторую практику с языком, поэтому я не могу беспокоиться о том, чтобы добавить дополнительные аргументы для каждого потенциального печата. – Nyles