No entiendo por qué este código se comporta de manera diferente en diferentes implementaciones:Lisp formato y fuerza de salida
(format t "asdf")
(setq var (read))
En CLISP se comporta como era de esperar, con el símbolo impreso, seguido de la lectura, pero en SBCL lee, luego salidas. He leído un poco en internet y lo cambió:
(format t "asdf")
(force-output t)
(setq var (read))
Esto, de nuevo, funciona bien en CLISP, pero en SBCL que todavía lee, entonces las salidas. Incluso traté de separarlo en otra función:
(defun output (string)
(format t string)
(force-output t))
(output "asdf")
(setq var (read))
Y aún así se lee y luego se emite. ¿No estoy usando force-output
correctamente o es solo una idiosincrasia de SBCL?
gracias, eso funcionó! –
Otra opción, según [Practical Common Lisp] (http://www.gigamonkeys.com/book/practical-a-simple-database.html), es utilizar el '' query-io * 'global en lugar de t o nil. – lindes