반응형
학부공부/인공지능2018. 10. 13. 01:46LISP의 Lambda 함수 ( Lambda Functions )

Lambda 함수 함수가 defun으로 정의될 때 , 그 함수명과 주소는 프로그램 안에서 다음의 호출을 대비하여 상징 테이블 (symboric table)에 저장된다. 그러나 때로는 프로그램 안에서 어떤 함수가 오직 한번만 쓰여지는 경우가 많다. 이것은 첫번째 인수로 부함수를 취하는 mapcar에서 자주 사용되어 지는 것을 볼 수 있는데 , LISP는 이것을 위하여 이름없는 혹은 무기명 함수의 사용을 가능하게 하는 기능을 제공하고 있다. 그러한 함수들이 lambda 함수인데 , 그 함수의 일반 형식은 다음과 같다. (lambda (arguments) ) 예를 들어서 보자 . 세제곱(3승) 값을 계싼하기 위해 lambda 함수를 이용하는 예를 들어 보자. 이것은 mapcar 함수와 숫자들의 리스트에 lam..

학부공부/인공지능2018. 10. 12. 01:04LISP의 대응함수 ( Mapping Functions)

대응 함수 ( Mapping Functions ) Mapcar는 어떤 함수를 하나 혹은 여러 개의 리스트에 연속적으로 적용시키기 위해 LISP에서 제공되는 몇 개의 대응함수 중의 하나이다. Mapcar의 첫번째 인수는 함수이다. 그리고 나머지 인수는 리스트들인데 , 여기에 앞의 함수가 차례로 적용된다. 연속적으로 리스트 내의 요소에 함수를 적용한 결과가 새로운 리스트 값으로 변환되어 되돌려 진다. 예제를 통해서 이해해 보자. (1 2 3 4 5)의 각 요소에 1를 더하는 문제를 가정해 보자 . mapcar와 함수 +1를 가지고 다음과 같이 간단하게 처리 할 수 있다.(mapcar ‘1+ ‘(1 2 3 4 5)) à ( 2 3 4 5 6) 만약 두 리스트의 대응되는 요소들끼리의 더한 합을 구하고자 한다면 ..

학부공부/인공지능2018. 10. 12. 00:49LISP의 배열(Arrays)

배열 (Arrays) 일차원 or 다차원 배열은 make-array 함수를 사용하여 정의 될 수 있다. 배열에 저장되는 내용물(items)은 어떠한 종류의 LISP 대상이라도 무방하고 가능하다. 예를 들어서 설명해 보자. myarray라는 배열명으로 세개의 셀(cell)을 가진 배열을 만든다면 , 아래와 같이 인용부호가 붙지 않은 배열명에 make-array 함수와 셀 숫자로써 생성한 배열을 setf or setq 를 써서 할당하는 방식을 취한다. (setf myarray (make-array ‘(3))) è #( NIL NIL NIL ) 위의 함수는 맨 앞에 # , 그 다음에 각 셀이 nil로 초기화된 배열을 결과 값으로 되돌려 주고 있음을 알 수 있다. 셀의 내용물에 접근하려면 두 개의 인수 , 배열..

학부공부/인공지능2018. 10. 12. 00:03LISP의 특성리스트(Property Lists)

특성리스트 (Property Lists) 특성리스트 함수들은 특성들을 원소에 할당 , Get , 대치 , 제거할 수 있다. 함수 putprop은 원소에 특성값을 할당한다. 이 함수는 세가지 인수들을 취하는데 , 차례대로 대상이름 ( 원소 ) , 특성 or 속성이름 , 특성 or 속성값을 갖는다. 예를 들어서 자동차에 대해 특성을 부여해 보면 다음과 같이 작성할 수 있다. (putprop ‘car ‘ford ‘make) à FORD (putprop ‘car 1988 ‘year) à 1988(putprop ‘car ‘red ‘color) à RED(putprop ‘car ‘four-door ‘style) à FOUR-DOOR (위에서 본 것처럼 일반형식은 다음과 같다 (putprop object value ..

학부공부/인공지능2018. 10. 9. 17:20LISP의 반복과 순환 ( Iteration and Recursion )

반복과 순환 (Iteration and Recursion) 반복 구조(Iteration Constructs) # do 구조 형태 : (do ( ) ( ) … ( )()) Val1 는 모두 평가되고 , 차례로 그에 대응한 변수 var1에 할당되는 초기값들이다 . 뒤에 오는 각 문들은 선택적 update문들인데 , 매번 반복될 때마다 var1가 어떻게 갱신되는가를 정의한다 . 반복되는 동안 변수들이 갱신된 후에 가 평가되는데 , 만약 결과값이 non-nil 인 경우 return value가 평가되고 되돌려 진다 . 몸체를 형성하는 들은 선택적이다 . 만약 상징문들이 있으면 탈출조건을 만날 때까지 각 반복마다 그것들이 수행된다 . factorial예제를 통해서 이해해 보자 . (defun factorial(n..

학부공부/인공지능2018. 10. 9. 03:18LISP 의 지역 변수 구조 ( Constructs for Local variables )

지역 변수 구조 ( Constructs for Local Variables ) setq로써 이루어지는 광역변수 ( global variable ) or 지역변수 형태로의 할당보다는 지역변수 (local variable)로 선언하여 사용하는 것이 더 바람직한 경우가 많다 . 물론 함수 정의 내의 인수 매개변수들은 지역변수들이다 . 함수 내에서 그 변수들에 할당된 값들은 오직 그 함수 내에서만 사용된다. 예를 들어서 , 다음 경우의 x와 y 변수들을 살펴 보자 (setq y ‘(a b c))(setq x ‘(d e f)) è (defun local-var(x) (setq y (cons x y)))è (local-var 6)è (6 A B C)è Xè (D E F)è Yè (6 A B C) 함수 정의 defu..

반응형
image