리스트 컴프리헨션 역사

박준규·2023년 2월 24일
1

리스트 컴프리헨션(list comprehensions)을 사용하면 아래 개념을 쉽게 사용할 수 있다.

  • map
  • filter
  • 곱집합

예를 들어 아래 표현은 리스트 xs 원소의 제곱을 나타낸다.

[ x*x | x <- xs]

아래 표현은 숫자 n의 약수를 나타낸다.

[ f | f <- [1..n], n `mod` f == 0 ]

아래처럼 함수 concatMap을 리스트 컴프리헨션으로 구현할 수 있다.

concatMap :: (a -> [b]) -> [a] -> [b]
concatMap f xs = [y | x <- xs, y <- f x ]

역사

리스트 컴프리헨션은 John Darlington이 학생일 때 처음 제시했다.

1981년에 David Turner가 프로그래밍 언어 KRC에서 사용하면서 유명해졌고 이때는 "ZF expression"이라고 불렀다.

1985년에 Wadler가 그의 논문에서 "list comprehension"이라는 용어를 사용했다.

이 기능을 도입한 언어

리스트 컴프리헨션은 주로 아래와 같은 함수형 언어들에서 주로 사용한다.

  • Miranda
  • Haskell
  • Erlang
  • Python

아직은 아니지만 Javascript에도 array comprehensions라는 이름으로 이 기능을 도입할 예정이다.

참고

profile
코딩하는 물총새

0개의 댓글