Emacs Lisp의 plist 사용법 간단 정리

Emacs // 2024년 06월 26일 작성 // 2024년 06월 27일 업데이트

plist

Emacs Lisp에서 plist는 'Property List'의 축약어로 다른 언어의 사전형(dictionary type)과 비슷한 기능의 자료구조를 제공한다. 참고로 Common Lisp에도 동일한 자료형은 있으나 사용법은 조금 다른 것 같다.

기본적으로 plist 자료구조는 단순 리스트에 키와 값이 연속으로 나열되는 구조라 표현에서 상당히 간결한 편이다.

plist 인스턴스 생성

plist 데이터를 생성하는 방법은 일반 리스트와 동일하다. 단지 요소 배치를 키와 값 순서대로 나열해야 한다는 특징이 있다.

(setq mycard
      '(name "Conrad"
        age 20
        phone "82-10-1234-5678"
        address "Earth, Milkyway, Laniakea Supercluster"
        :memo "Lazy Human"))

이렇게 키와 값을 나열하면 plist 형식의 인스턴스가 생성된다.

위의 예에서 약간 특이하게 :memo만 앞에 콜론(:)이 붙어있는데 Emacs Lisp에서 심볼을 표현하는 문법이며 이런 형식도 쓸 수 있다는 것을 알려주기 위함이지 다른 의미가 있는 것은 아니다.

plist에서 키의 값 읽기

plist 데이터에서 특정 키의 값을 읽을 때는 plist-get 함수를 사용할 수 있다.

(plist-get mycard 'name)
;; -> "Conrad"
(plist-get mycard :memo)
;; -> "Lazy Human"

plist에서 키의 값 쓰기

plist 데이터에 키와 값을 추가로 쓰거나 업데이트하기 위해서는 plist-put 함수를 사용할 수 있다.

(plist-put mycard 'gender "etc")

관련된 글들