Lisp 용어 질문: “apply”

hongminhee의 이미지

Lisp에서 보통 car, cdr 같은 일반 함수를 호출하는 것을 apply한다고 표현하는데요. conddefun 같은 special form에 대해서도 apply한다는 표현을 씁니까? 쓰지 않는다면 다른 표현이 있는지 궁금합니다.

sblade의 이미지

LISP 에서는 함수의 적용이 "apply (function) over/to (list)" 이기 때문에 함수의 경우 "apply" 가 자연스러운데, cond 나 defun 은 list 에 "적용"하는게 아니라서 apply 가 좀 이상하게 들리긴 합니다. 그냥 "use" 라고 하면 될 것 같네요.

"In the following example, we use the symbol defun to define a function:

(defun ..."

imyejin의 이미지

defmacro 같은 걸로 정의할걸요. 매크로하는 일이 코드를 리스트의 형태로 받아 리스트를 처리해서 코드 형태의 리스트를 만들어 내는 함수니까 결국 그것도 메타레벨이긴 하지만 함수를 리스트에 적용하는 겁니다. cond같은 경우는 리습이 eager evaluation을 하기 때문에 매크로로 정의하는 것이지, 리습이 하스켈처럼 lazy evaluation을 했다면 cond 같은 제어문은 굳이 매크로를 이용하지 않고 일반 함수로도 정의 가능했겠죠.

defun도 매크로로 정의되어 있을 겁니다.

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin

[예진아씨 피카사 웹앨범] 임예진 팬클럽 ♡예진아씨♡ http://cafe.daum.net/imyejin