항 비교
항 비교
Prolog 항들을 비교하는 내장 술어들을 설명해요.
본문
표준 항 전체순서(Standard total ordering of terms)
이 절에서 설명하는 내장 술어들은 사용자가 Prolog 항을 비교할 수 있게 해줘요. Prolog 항들은 표준 항 전체순서에 따라 완전히 순서가 매겨지며, 그 순서는 다음과 같아요(가장 작은 항부터 가장 큰 항까지):
- 변수 - 가장 오래된 것 먼저.
- 유한 도메인 변수(9.1.1절) - 가장 오래된 것 먼저.
- 부동소수점 수 - 숫자 순서로.
- 정수 - 숫자 순서로.
- 원자 - 알파벳(즉 문자 코드) 순서로.
- 복합 항 - 먼저 아리티로, 그다음 주 functor의 이름으로, 그리고 인자들을 왼쪽에서 오른쪽 순서로.
리스트는 복합 항(주 functor가 '.'/2)으로 취급돼요.
변수의 순서의 이식성은 보장되지 않아요(ISO 참조에서 변수의 순서는 시스템 의존적).
(==)/2 - 항 동일, (==)/2 - 항 비동일, (@<)/2 - 항 미만, (@=<)/2 - 항 이하, (@>)/2 - 항 초과, (@>=)/2 - 항 이상
Templates
==(?term, ?term)
\==(?term, ?term)
@<(?term, ?term)
@=<(?term, ?term)
@>(?term, ?term)
@>=(?term, ?term)
Description 이 술어들은 표준 항 전체순서(8.3.1절)에 따라 두 항을 비교해요.
Term1 == Term2-Term1과Term2가 같으면 성공.Term1 \== Term2-Term1과Term2가 다르면 성공.Term1 @< Term2-Term1이Term2보다 작으면 성공.Term1 @=< Term2-Term1이Term2보다 작거나 같으면 성공.Term1 @> Term2-Term1이Term2보다 크면 성공.Term1 @>= Term2-Term1이Term2보다 크거나 같으면 성공.
==, \==, @<, @=<, @>, @>=는 미리 정의된 중위 연산자예요(8.14.10절).
Errors: 없음.
Portability: ISO 술어.
compare/3
Templates
compare(?atom, +term, +term)
Description
compare(Order, Term1, Term2)는 표준 순서(8.3.1절)에 따라 Term1과 Term2를 비교하고 Order를 다음으로 통일해요:
Term1이Term2보다 작으면 원자<.Term1과Term2가 같으면 원자=.Term1이Term2보다 크면 원자>.
Errors
Order가 변수도 원자도 아님 -type_error(atom, Order)Order가 원자이지만<,=,>가 아님 -domain_error(order, Order)
Portability: ISO 술어.