let-alist 1.0.5
Easily let-bind values of an assoc-list by their names

概要

初めて本家ELPAにあるパッケージを紹介します。

let-alist マクロは、 連想リスト (alist) の
アクセスを劇的に簡単にします。

読み取りのみで、文字列には対応していません。

こういうマクロがあると本当に助かりますね。

インストール

パッケージシステムを初めて使う人は
以下の設定を ~/.emacs.d/init.el の
先頭に加えてください。

(package-initialize)
(setq package-archives
      '(("gnu" . "http://elpa.gnu.org/packages/")
        ("melpa" . "http://melpa.org/packages/")
        ("org" . "http://orgmode.org/elpa/")))

初めてlet-alistを使う方は
以下のコマンドを実行します。

M-x package-install let-alist

アップグレードする方は、
以下のコマンドでアップグレードしてください。
そのためにはpackage-utilsパッケージが必要です。

M-x package-install package-utils (初めてアップグレードする場合のみ)
M-x package-utils-upgrade-by-name let-alist

使用例 141221045657.let-alist.el(以下のコードと同一)

(require 'let-alist)
(setq alist '((foo . "FOO")
              (bar . "BAR")
              ("baz" . "not used")))
;;; assq/cdrを使っていたのが
(let ((.foo (cdr (assq 'foo alist)))
      (.bar (cdr (assq 'bar alist))))
  (cons .foo .bar))                     ; => ("FOO" . "BAR")
;;; あっさり! .つきのシンボルでアクセスできる!!
(let-alist alist
  (cons .foo .bar))                     ; => ("FOO" . "BAR")
;;; 文字列で使えないのが残念でならない。亜種が欲しいところ。
(let-alist alist
  .baz)                                 ; => nil
;;; 残念ながら書き込みはできない
(let-alist alist
  (setf .foo 100)
  alist)                                ; => ((foo . "FOO") (bar . "BAR") ("baz" . "not used"))


本日もお読みいただき、ありがとうございました。参考になれば嬉しいです。