본문 바로가기

Filter와 Map (Emacs Lisp)

기술적인 이야기/이맥스 2020. 3. 30.
반응형

Filter

(require 'seq)
(seq-filter
 (lambda (x)
   (= 0 (% x 2)))
 '(1 2 3 4 5 6))

;; => (2 4 6)

seq 패키지에 들어있는 함수이기 때문에 상황에 따라 임포트를 해야할 수도 있습니다.

Map

(mapcar
 (lambda (x)
   (* x 2))
 '(1 2 3 4 5))

;; => (2 4 6 8 10)

물론 lambda 대신 일반적인 함수도 사용할 수 있습니다.

Map(2)

(mapc
 (lambda (x)
   (* x 2))
 '(1 2 3 4 5))

;; => (1 2 3 4 5)

이름 때문에 적어보긴 했는데, 사실 mapc는 Map이라고 하기엔 좀 그렇고, 오히려 Interation에 가깝습니다. 따라서 다른 언어의 for문과 비슷하게 리스트 원소를 이용해 반복문을 작성할 때 유용합니다. 리턴되는 결과는 입력된 리스트의 각 원소이기 때문에 원래 데이터와 동일한 데이터가 돌려진다고 볼 수 있습니다.

728x90
반응형

'기술적인 이야기 > 이맥스' 카테고리의 다른 글

Property List (Emacs Lisp)  (253) 2020.03.30
Let과 Let* (Emacs Lisp)  (1328) 2020.03.30
문자열 처리 함수들 (Emacs Lisp)  (1020) 2020.03.29
리스트 다루기 (Emacs Lisp)  (889) 2020.03.24
Emacs  (1664) 2020.03.24

댓글