상세 컨텐츠

본문 제목

리스트를 작성하는 함수 「list」 「cons」

IT & Programming/LISP 공부

by 그림아이 2021. 12. 21. 08:00

본문

반응형

목록 만들기 list

list 동작

리스트란 몇개의 데이터를 좌우 한쌍의 괄호로 둘러싸, 하나에 정리한 것입니다. 목록에 저장된 각 데이터를 요소 또는 원자 라고 합니다.

AutoLISP에서는 변수 유형 선언이 필요하지 않으므로 목록에 AutoCAD의 모든 데이터를 저장할 수 있습니다.

목록 만들기

숫자의 1과 2를 요소에 가지는 리스트를 예로 설명합니다.

(list 1 2)

설명 자체는 매우 간단하고, list 뒤에 요소가 되는 데이터를 나란히 기술할 뿐입니다. 요소가 2개 또는 3개의 숫자인 경우 2D 또는 3D 좌표로 처리할 수도 있습니다.

또, 리스트 자체를 요소로 할 수도 있어, 프로그램의 기술은 다음과 같이 됩니다.

(list (list 1 2) 3)

싱글 쿼테이션으로 대용할 수 있다

함수 list는 「list」라고 기술하는 대신, 「'」(싱글 쿼테이션)로 대용하는 것이 가능합니다.

다음의 리스트는 다른 기술을 하고 있습니다만, 반환값은 같은 리스트가 됩니다.

(list 1 2)
'(1 2)

"'"는 quote 라는 함수를 간략하게 표현한 것으로, 주어진 인수를 평가하지 않고 돌려줍니다. 따라서 위의 두 목록은 동일한 목록을 반환합니다.

 

list 서식

list의 구문과 인수와 반환값은 다음과 같습니다.

구문
(list [expr…] )
인수
expr만들려는 목록의 요소. 선택 사항.
반환값
목록 / nil지정된 인수를 요소에 가지는 리스트. 인수가 없는 경우는 nil를 돌려준다.

점 쌍 만들기 cons

cons 동작

cons도 list와 같이 리스트를 작성하는 함수이지만, 작성되는 리스트는 도트쌍 이라고 불리는 특수한 리스트가 됩니다.

도트 쌍이란?

도트쌍이란 아래와 같이 요소가 2개만으로 , 요소 사이에 마침표(도트)가 들어간 형식 으로 표현되는 리스트입니다.

(1 . "A")

cdr의 반환 값은 일반 목록의 경우 목록 또는 nil이지만 점 쌍의 경우 두 번째 요소는 직접 얻을 수 있습니다.

 

덧붙여서, 도형 정의 데이터의 요소도 모두 도트쌍이 되고 있습니다.

 

참고로 점 쌍은 일반 목록과 다릅니다. 그 때문에, 통상의 리스트를 인수로 하는 append나 subst등의 함수에서는 사용할 수 없기 때문에 주의해 주세요.도트 쌍 만들기

그러면 cons 설명에 대해 설명합니다. 위의 닷 쌍의 예를 cons로 작성하는 경우는 다음과 같이 기술합니다.

(cons 1 "A")

list와 마찬가지로 요소를 나란히 작성하면됩니다. list와 같이 '''를 사용하여 간단하게 표현할 수 없습니다.

또, 2 번째의 요소에 리스트를 기술했을 경우, 반환값은 닷 쌍이 아니고 통상의 리스트가 됩니다.

(cons 1 (list 2 3))

위의 반환 값은 다음과 같은 일반 목록입니다.

(1 2 3)

cons 형식

cons 구문과 인수 및 반환 값은 다음과 같습니다.

구문
(cons new-first-element list-or-atom )
인수
new-first-element만들 점 쌍의 첫 번째 요소입니다.list-or-atom만들 점 쌍의 두 번째 요소입니다.
반환값
점 대 / 목록list-or-atom 이 리스트가 아닌 경우는 도트쌍, list-or-atom 이 리스트인 경우는 리스트를 돌려준다.

요약

이번 정리

  • 목록은 AutoCAD의 모든 데이터를 저장할 수 있습니다.
  • 목록에 저장하는 데이터를 요소 또는 원자라고 합니다.
  • list로 작성한 리스트는 좌표로서 취급할 수 있다
  • cons에서는 도트 쌍을 ​​만들 수 있습니다.

 

프로그래밍

 

728x90
반응형

관련글 더보기

댓글 영역