% Variable *PRINT-BASE*, *PRINT-RADIX*
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
>> 1H 1G 1F 1E 1D 1C 1B 1A 19 18
>> 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
>> #3r101 #3r1/101
>> #o12 #o1/12
>> 10. #10r1/10
>> #xA #x1/A
=> NIL
format
, write
, write-to-string
によって
束縛が生じるかもしれません。
format
,
write
,
write-to-string
なし。