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)