。공부 。

[JESS] Jess 일반 리스트

kyoe 2008. 7. 8. 16:24
jess 에서는 C나 자바에서와 비슷한 의미로 리스트라는걸 쓰더군요 아직 배우는수준이라 정확히 이녀석을 어디에 어떻게 쓰는지는 자세히는 모르지만 문법정도는 설명할수 있을거 같네요

1. 변수를 선언하듯 리스트를 선언해 줍니다.
(bind ?com-list (create$ 모니터 본체 스피커))
create$ 라는 것이 보이죠? 이는 제스에서 일반 리스트를 생성할때 첫번째원소는 함수로 인식하기 때문에 (예를 들어 (+ 2 2) 에서 +를 함수로 인식하는것과 마찬가지) 이를 해결하기 위해 create$를 사용합니다.
함수앞에 '$' 가 붙으면 일반리스트를 제어하는 함수라 생각하면 쉽다.
이렇게 되면 ?com-list 의 첫번째원소는 모니터 두번째는 본체 그리고 세번째는 스피커되 되는것이죠

2. 리스트의 헤드와 꼬리 부분 출력
(printout t"첫번째 원소 : " (first$ ?com-list) crlf)
(printout t"나머지 원소 : " (rest$ ?com-list) crlf)
첫번째 원소(헤드)를 받아오는 특수함수 first$  
첫번째 원소를 제외한 나머지 원소(꼬리)를  받아오는 rest$
위와 같이 first$ 와 rest$라는 특수 함수를이용해 헤드와 꼬리부분을 받아올수 있습니다.

3. 리스트의 특정원소 받아오기
(printout t"특정위치의 원소 : " (nth$ 2 ?com-list) crlf)
특정위치의 원소를 받아오는 nth$ 함수를 사용해서 원하는 원소의 값을 받아올수 있다.

4. 일반리스트 데이터 추가
(bind ?addcom-list (create$ ?com-list 키보드 마우스))
addcom-list 를 선언한뒤 데이터를 할당하는데 이때 전에 선언해둔 ?com-list를 사용해서 데이터를 추가 할수 도 있다.

(printout t"addcom-list : " ?addcom-list)
위의 addcom-list 를 출력하면 다음과 같다.
addcom-list : (모니터 본체 스피커 키보드 마우스)