Variable *PRINT-BASE*
, *PRINT-RADIX*
*print-base*
- 基数
*print-radix*
- generalized-boolean
*print-base*
の初期値は10
。
*print-radix*
の初期値はfalse。
*print-base*
と*print-radix*
は、有理数の印刷を制御します。 *print-base*
の値は、現在の出力の基数と呼ばれます。
*print-base*
の値は、プリンターが有理数を印刷する基数です。 基数が10
より大きいとき、 アルファベットの文字が9より上の数字の表現に使用されます。
*print-radix*
の値がtrueのとき、 プリンターは有理数を印刷するときに 指定した基数を表す基数指定子を印刷します。 基数指定子は、常に小文字で印刷されます。 もし*print-base*
が2
, 8
, 6
のとき、 基数指定子はそれぞれ#b
, #o
, #x
が使用されます。
整数のとき、基数10
ということを 先行する基数指定子のかわりに、 末尾の小数点で示します。 ratio
のときは、#10r
を使用します。
let ((*print-base* 24.) (*print-radix* t))
(print 23.))
(
>> #24rN=> 23
setq *print-base* 10) => 10
(setq *print-radix* nil) => NIL
(dotimes (i 35)
(let ((*print-base* (+ i 2))) ;10進数の40を2から36進数で
(write 40) ;それぞれ印刷します
(if (zerop (mod i 10)) (terpri) (format t " "))))
(101000
>> 1111 220 130 104 55 50 44 40 37 34
>> 31 2C 2A 28 26 24 22 20 1J 1I
>> 19 18
>> 1H 1G 1F 1E 1D 1C 1B 1A 17 16 15 14
>> => NIL
dolist (pb '(2 3 8 10 16))
(let ((*print-radix* t) ;整数の10と分数の1/10を
(*print-base* pb)) ;基数2, 3, 8, 10, 16で
(format t "~&~S ~S~%" 10 1/10))) ;それぞれ印刷します
(#b1010 #b1/1010
>> 101
>> #3r101 #3r1/#o12 #o1/12
>> 10. #10r1/10
>> #xA #x1/A
>> => NIL
format
, write
, write-to-string
によって 束縛が生じるかもしれません。
format
, write
, write-to-string
なし。