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で文字列の要素アクセスの方法を探してたけど、なかなかわからない。でもなんとか見つけた。
さすが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"
おかげで解決できました。