Emacs Lispで文字列の要素のアクセス

このコードを実行したかった。

(map 'string #'(lambda (x y)
                  (char "01234567890ABCDEF" (mod (+ x y) 16)))
       '(1 2 3 4)
       '(10 9 8 7)) ;; =>  "AAAA"

これだとchar関数がないですって怒られる。このcharは、Common Lispの文字列の要素アクセスになる。この対応するEmacs Lispで文字列の要素アクセスの方法を探してたけど、なかなかわからない。でもなんとか見つけた。

Emacs Lisp の文字列操作まとめ

さすがkiwanamiさんである。

これによるとcharはarefを使って代替すればいいことがわかる

Ruby Common Lisp Emacs Lisp
s[i]
s.slice(i)
(char s i) (aref s i)

なので実行コードはcharをarefにすればいいだけである。

(map 'string #'(lambda (x y)
                  (aref "01234567890ABCDEF" (mod (+ x y) 16)))
       '(1 2 3 4)
       '(10 9 8 7)) ;; =>  "AAAA"

おかげで解決できました。