타입과 모드
타입과 모드
templates 부분은 관련 내장 술어의 각 인자에 대해 그 모드와 타입을 정의해요.
본문
templates 부분은 관련 내장 술어의 각 인자에 대해 그 모드(mode)와 타입(type)을 정의해요. 모드는 내장 술어가 호출될 때 인자가 인스턴스화되어야 하는지 여부를 지정해요. 모드는 타입 바로 앞에 부호로 인코딩돼요. 가능한 모드는 다음과 같아요:
+- 인자가 인스턴스화되어야 함.-- 인자가 변수여야 함(내장 술어가 성공하면 인스턴스화될 것).?- 인자가 인스턴스화되었거나 변수일 수 있음.
인자의 타입은 다음 표로 정의돼요:
| 타입 | 설명 |
|---|---|
TYPE_list |
각 요소의 타입이 TYPE인 리스트 |
TYPE1_or_TYPE2 |
타입이 TYPE1 또는 TYPE2 중 하나인 항 |
atom |
원자 |
atom_property |
원자 속성(8.19.11절) |
boolean |
true 또는 false 원자 |
byte |
0 ≤ 정수 ≤ 255 |
callable_term |
원자 또는 복합 항 |
character |
단일 문자 원자 |
character_code |
1 ≤ 정수 ≤ 255 |
clause |
절(사실fact 또는 규칙rule) |
close_option |
닫기 옵션(8.10.7절) |
compound_term |
복합 항 |
evaluable |
산술 표현식(8.6.1절) |
fd_bool_evaluable |
부울 FD 표현식(9.7.1절) |
fd_labeling_option |
FD 레이블링 옵션(9.9.1절) |
fd_evaluable |
산술 FD 표현식(9.6.1절) |
fd_variable |
FD 변수 |
flag |
Prolog 플래그(8.22.1절) |
float |
부동소수점 수 |
head |
절의 머리(원자 또는 복합 항) |
integer |
정수 |
in_byte |
0 ≤ 정수 ≤ 255 또는 -1(파일 끝용) |
in_character |
단일 문자 원자 또는 원자 end_of_file(파일 끝용) |
in_character_code |
1 ≤ 정수 ≤ 255 또는 -1(파일 끝용) |
io_mode |
read, write, append 중 하나의 원자 |
list |
빈 리스트 [] 또는 비어 있지 않은 리스트 `[_ |
nonvar |
변수가 아닌 어떤 항 |
number |
정수 또는 부동소수점 수 |
operator_specifier |
연산자 지정자(8.14.10절) |
os_file_property |
운영체제 파일 속성(8.27.11절) |
predicate_indicator |
Name/Arity 형태의 항. 여기서 Name은 원자, Arity는 정수 ≥ 0. strict_iso Prolog 플래그가 꺼져 있으면 callable 항을 줄 수 있음(8.22.1절) |
predicate_property |
술어 속성(8.8.2절) |
read_option |
읽기 옵션(8.14.1절) |
socket_address |
'AF_UNIX'(A) 또는 'AF_INET'(A,N) 형태의 항. A는 원자, N은 정수 |
socket_domain |
'AF_UNIX' 또는 'AF_INET' 중 하나의 원자 |
source_sink |
소스 또는 싱크를 식별하는 원자 |
stream |
스트림 항: '$stream'(N) 형태의 항. N은 정수 ≥ 0 |
stream_option |
스트림 옵션(8.10.6절) |
stream_or_alias |
스트림 항 또는 별칭(원자) |
stream_position |
스트림 위치: I1, I2, I3, I4가 정수인 '$stream_position'(I1, I2, I3, I4) 항 |
stream_property |
스트림 속성(8.10.10절) |
stream_seek_method |
bof, current, eof 중 하나의 원자 |
term |
어떤 항 |
var_binding_option |
변수 바인딩 옵션(8.5.3절) |
write_option |
쓰기 옵션(8.14.6절) |