함수( lambda / apply / mapcar )의 이해

오토캐드 2018. 7. 8. 15:17

출처 : 네이버 지식인

[ lambda함수 ]->마지막 expr의 값-----------------------------------------------
;익명 함수를 정의합니다.
서브루틴이라고 이해하세요
(lambda (x) (+ x 3))을 유사하게 풀어보면
=>(defun lambda함수(x) (setq result (+ x 3)) ) ;-> 변수에 3을 더하는 함수

(lambda (x y) (* x y))을 유사하게 풀어보면
=>(defun lambda함수(x y) (setq result (* x y)) ) ;-> 변수 x,y을 곱하는 함수

 

[ apply함수 ]->함수 호출의 결과 ------------------------------------------------
;인수 리스트를 지정된 함수에 전달하고 실행합니다.
;(apply 'function list)
리스트(list)에 있는 모든인수을 지지고 볶은('function) 결과값을 나타냅니다.

(apply '+ '(1 2 3)) ;->1,2,3을 모두 +한 결과값 6을 보여줌

(apply 'strcat '("a" "b" "c")) ;->a,b,c을 모두 strcat으로 결합한 "abc"을 보여줌 

(apply '(lambda (x y z) (* x (- y z))) '(5 20 14) )
;->5,20,14을 x,y,z라고 보고 지지고 볶은(* 5 (- 20 14))한 결과값30

 

[ mapcar함수 ]->목록----------------------------------------------------------
;인수로 지정된 목록(들)을 지정된 함수에 전달하여 
;그 실행 결과를 나타내는 목록을 리턴합니다.
;(mapcar function list1... listn)
리스트(list)에 있는 각각의 인수에 작전을 수행(+1)하고 수행된 인수의 리스트로 보여줌

(setq a 10 b 20 c 30) 
(mapcar '1+ (list a b c))
;->a,b,c에 각각의 작전을(a+1 b+1 c+1) 수행하고 수행된 인수의 리스트(11 21 31)을 보여줌

(mapcar '(lambda (x) (+ x 3)) '(10 20 30))
;->요것의 작전은 3을 더하는것.각각의 인수에 작전수행 결과는(13 23 33)
-----------------------------------------------------------------------------



설정

트랙백

댓글