Adjust the naming conventions for text-level compatibility with my CL data-lens library.
QOFZQTHBDKC2GARYN6I3BUMCGYYMIRSBWQ4F5YHY52QBE3HHXQBQC
JGUGZ63U5B674H6CDGOYNDTYX563PNAX7PE2AZHCZDOL4B2VE34AC
RXCY7LD6ZRIOIKZEYKLMCYPMQPXF4DOEEFBDLVR2B22BXLZJFFBQC
A3TVGLVHSVLMEHLHB3TPBSD3QGNVGX3DIK6BEBDTTHWBNW4ALMRAC
ZYEHQDDB635RZOU4YDJYS5SPJ6BBZEWGSYLNABXRTW5OA4AXU7LQC
KYYBNL5W2EML2V75WSE27ARFIWB5H76LXMH4XUBUDISO5UJKV43AC
T6AJ2U27VBZRYWEGYSPKY4A7NU3FFXROISTS3KTT5O7QDWZ2K7TAC
(cl-defgeneric data-lens:functionalize (it)
(:method ((it hash-table))
(lambda (key &optional default)
(gethash key it default)))
(:method ((it vector))
(lambda (idx &optional default)
(let ((present-p (and (>= idx 0)
(< idx (length it)))))
(if present-p
(aref it idx)
default))))
(:method ((it symbol))
(symbol-function it))
(:method ((it function))
it)
(:method ((it subr))
it))