Variable *PRINT-BASE*, *PRINT-RADIX*

UP


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

備考

なし。


TOP, Github