lambda — 익명 함수를 만드는 표기
lambda — 익명 함수를 만드는 표기
함수를 여기저기 넘기려면 매번 이름을 붙여 정의하기가 번거로워요. 정확히 한 번 쓸 함수면 이름 없이 그 자리에서 만드는 게 낫죠. lambda는 이름 없는 함수, 즉 익명 함수를 만드는 표기예요. #'(lambda ...) 축약형으로 널리 쓰여요.
본문
lambda는 일반 lambda-list와 폼들을 받아 함수를 만들어요. 함수 특수 폼인 function을 감싼 표기와 정확히 같은 의미예요.
lambda lambda-list [[declaration* | documentation]] form*
=> function
즉 아래의 세 표기는 모두 동일해요.
(lambda lambda-list [[declaration* | documentation]] form*)
== (function (lambda lambda-list [[declaration* | documentation]] form*))
== #'(lambda lambda-list [[declaration* | documentation]] form*)
#' 리더 매크로 덕분에 (function (lambda ...))을 간결하게 #'(lambda ...)로 적을 수 있어요. lambda는 바로 이 #' 축약의 축약이라 볼 수 있어요.
(funcall (lambda (x) (+ x 3)) 4) => 7
(lambda (x) (+ x 3))이 #' 없이도 funcall에 그대로 함수로 전달돼요. 실제로 lambda 매크로는 아래처럼 #'을 붙여주는 것과 똑같이 구현할 수 있어요.
(defmacro lambda (&whole form &rest bvl-decls-and-body)
(declare (ignore bvl-decls-and-body))
`#',form)
함께 보기
lambda(심볼)