Pregunta ¿Cómo puedo rellenar un argumento con ceros utilizando la función de formato lisp?


Estoy jugando con la función de formato de lisp, pero me he topado con un problema porque, aunque puedo hacer que escriba la lista de números alineados muy bien, parece que no puedo hacerlo a cero:

(defun inc (a) (+ 1 a))
(dotimes (i 10)
  (format t "~3@:D ~:*~R~%" (inc i)))

Esto produce el siguiente resultado:

+1: one
+2: two
+3: three
+4: four
+5: five
+6: six
+7: seven
+8: eight
+9: nine
+10: ten

¿Alguien sabe cómo conseguir que esté rellenado en cero?


5
2017-12-29 14:06


origen


Respuestas:


Ejemplo levantado de el capítulo de PCL sobre FORMATO:

(format nil "~12d" 1000000)    ==> "     1000000"
(format nil "~12,'0d" 1000000) ==> "000001000000"

9
2017-12-29 14:18