학부공부/인공지능

LISP의 배열(Arrays)

IT grow. 2018. 10. 12. 00:49
반응형

배열 (Arrays)

 

일차원 or 다차원 배열은 make-array 함수를 사용하여 정의 될 수 있다.

배열에 저장되는 내용물(items)은 어떠한 종류의 LISP 대상이라도 무방하고 가능하다.

예를 들어서 설명해 보자.

 

myarray라는 배열명으로 세개의 셀(cell)을 가진 배열을 만든다면

아래와 같이 인용부호가 붙지 않은 배열명에 make-array 함수와 셀 숫자로써 생성한 배열을 setf or setq 를 써서 할당하는 방식을 취한다.

 

(setf myarray (make-array ‘(3)))

è  #( NIL NIL NIL )

 

위의 함수는 맨 앞에 # , 그 다음에 각 셀이 nil로 초기화된 배열을 결과 값으로 되돌려 주고 있음을 알 수 있다.

셀의 내용물에 접근하려면 두 개의 인수 , 배열명과 첨자값을 가지는 aref 함수를 사용한다

셀의 첨자값은 0부터 부여되기 시작하므로 , 첨자 값 2는 세번째 셀을 뜻한다.

 

(aref myarray 2) à NIL

 

배열에 내용물을 저장하는 것은 어떻게 하면 될 까??


setf함수를 사용하여서 특성리스트에 특성들을 저장했던 것과 같은 방법으로 하면 된다.

 

(setf (aref myarray 0) 10)à 10

(setf (aref myarray 1) ‘wow)à WOW

(setf (aref myarray 2) ‘(wow1 wow2 wow3)) à (WOW1 WOW2 WOW3)  


반응형