LISP-데이터 유형

LISP에서 변수는 형식화되지 않지만 데이터 개체는 형식화됩니다.

LISP 데이터 유형은 다음과 같이 분류 할 수 있습니다.

  • Scalar types − 예 : 숫자 유형, 문자, 기호 등

  • Data structures − 예를 들어, 목록, 벡터, 비트 벡터 및 문자열.

명시 적으로 선언하지 않는 한 모든 변수는 LISP 객체를 값으로 사용할 수 있습니다.

LISP 변수에 대한 데이터 유형을 지정할 필요는 없지만 특정 루프 확장, 메서드 선언 및 이후 장에서 논의 할 다른 상황에서 도움이됩니다.

데이터 유형은 계층 구조로 정렬됩니다. 데이터 유형은 LISP 개체의 집합이며 많은 개체가 이러한 집합에 속할 수 있습니다.

그만큼 typep 술어는 객체가 특정 유형에 속하는지 여부를 찾는 데 사용됩니다.

그만큼 type-of 함수는 주어진 객체의 데이터 유형을 반환합니다.

LISP의 유형 지정자

유형 지정자는 데이터 유형에 대한 시스템 정의 기호입니다.

정렬 fixnum 꾸러미 단순 문자열
원자 흙손 경로명 단순 벡터
빅넘 함수 무작위 상태 단일 플로트
비트 해시 테이블 비율 표준 문자
비트 벡터 정수 합리적인 흐름
캐릭터 예어 읽을 수있는
[흔한] 명부 순서 [문자열 문자]
컴파일 된 함수 long-float 짧은 부동 상징
복잡한 부호있는 바이트
단점 없는 단순 배열 부호없는 바이트
더블 플로트 번호 단순 비트 벡터 벡터

이러한 시스템 정의 유형 외에도 고유 한 데이터 유형을 만들 수 있습니다. 구조 유형이 다음을 사용하여 정의되는 경우defstruct 함수의 경우 구조 유형의 이름이 유효한 유형 기호가됩니다.

예 1

main.lisp라는 새 소스 코드 파일을 만들고 그 안에 다음 코드를 입력합니다.

(setq x 10)
(setq y 34.567)
(setq ch nil)
(setq n 123.78)
(setq bg 11.0e+4)
(setq r 124/2)

(print x)
(print y)
(print n)
(print ch)
(print bg)
(print r)

실행 버튼을 클릭하거나 Ctrl + E를 입력하면 LISP가 즉시 실행하고 반환 된 결과는 다음과 같습니다.

10 
34.567 
123.78 
NIL 
110000.0 
62

예 2

다음으로 이전 예제에서 사용 된 변수의 유형을 확인하겠습니다. main이라는 새 소스 코드 파일을 만듭니다. lisp에 다음 코드를 입력하십시오.

(defvar x 10)
(defvar y 34.567)
(defvar ch nil)
(defvar n 123.78)
(defvar bg 11.0e+4)
(defvar r 124/2)

(print (type-of x))
(print (type-of y))
(print (type-of n))
(print (type-of ch))
(print (type-of bg))
(print (type-of r))

실행 버튼을 클릭하거나 Ctrl + E를 입력하면 LISP가 즉시 실행하고 반환 된 결과는 다음과 같습니다.

(INTEGER 0 281474976710655) 
SINGLE-FLOAT 
SINGLE-FLOAT 
NULL 
SINGLE-FLOAT 
(INTEGER 0 281474976710655)