타입과 모드

타입과 모드

templates 부분은 관련 내장 술어의 각 인자에 대해 그 모드와 타입을 정의해요.

출처: GNU Prolog Manual - Types and modes

본문

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절)

더 알아보기