2 ms·
TXR Lisp program: (defvarl ch-name (relate (rlist 0..32 127) '#"NUL SOH STX ETX EOT ENQ ACK BEL BS \
by kazinator 2y ago
TXR Lisp program:
(defvarl ch-name (relate (rlist 0..32 127)
'#"NUL SOH STX ETX EOT ENQ ACK BEL BS \
HT LF VT FF CR SO SI DLE DC1 DC2 DC3 \
DC4 NAK SYN ETB CAN EM SUB ESC FS GS \
RS US SPC DEL"
nil))
(defun print-row (ch)
(format t "~,3d ~,02x ~,07b ~,03o ~a\n"
ch ch ch ch (or [ch-name ch] (chr-num ch))))
(match-case *args*
(@(require @(or @(with (`0x@{dig #/[\dA-Fa-f]+/}`) base 16)
@(with (`0b@{dig #/[01]+/}`) base 2)
@(with (`0o@{dig #/[0-7]+/}`) base 8)
@(with (`@{dig #/\d+/}`) base 10))
(let ((val (toint dig base)))
(if (<= 0 val 127)
(print-row val)))))
(() [mapdo print-row 0..128])
(@else (put-line "error in argument") (exit nil)))
- kazinator 2y agoNo need to use a word list literal in definition of ch-name; symbols will do: (defvarl ch-name (relate (rlist 0..32 127) '(NUL SOH STX ETX EOT ENQ ACK BEL BS HT LF VT FF CR SO SI DLE DC1 DC2 DC3 DC4 NAK SYN ETB CAN EM SUB ESC FS GS RS US SPC DEL) nil))