술어 정보
술어 정보
정의된 프로시저에 관한 정보를 얻는 술어들을 설명해요.
본문
current_predicate/1
Templates
current_predicate(?predicate_indicator)
Description
current_predicate(Pred)는 Pred와 통일되는 정의된 프로시저의 술어 표시자가 존재하면 성공해요. 모든 사용자 정의 프로시저는 정적이든 동적이든 찾을 수 있어요. 이름이 '$'로 시작하는 내부 시스템 프로시저는 찾을 수 없어요. 사용자 정의 프로시저는 절이 없어도 찾을 수 있어요. 사용자 정의 프로시저는 abolish 되었으면 찾을 수 없어요.
ISO 참조를 따르기 위해 내장 술어는 찾을 수 없어요(strict_iso Prolog 플래그가 꺼져 있지 않으면)(8.22.1절). 이 술어는 백트래킹 시 재실행 가능해요.
Errors
Pred가 변수도 술어 표시자도 아님 -type_error(predicate_indicator, Pred)Pred가Name/Arity항이고Arity가 변수도 정수도 아님 -type_error(integer, Arity)Pred가Name/Arity항이고Name이 변수도 원자도 아님 -type_error(atom, Name)Pred가Name/Arity항이고Arity가 정수 < 0 -domain_error(not_less_than_zero, Arity)Pred가Name/Arity항이고Arity가max_arity플래그(8.22.1절)보다 큰 정수 -representation_error(max_arity)
Portability: ISO 술어.
predicate_property/2
Templates
predicate_property(?callable, ?predicate_property)
Description
predicate_property(Head, Property)는 Head가 속성 Property를 가진 술어를 참조하면 성공해요. 모든 사용자 정의 프로시저와 내장 술어를 찾을 수 있어요. 이름이 '$'로 시작하는 내부 시스템 프로시저는 찾을 수 없어요. 이 술어는 백트래킹 시 재실행 가능해요.
버전 1.4.0부터 predicate_property/2는 더 이상 술어 표시자를 받지 않아요. 제어 구조가 이제 반환돼요. 속성 built_in_fd와 control_construct는 이제 built_in 속성을 암시해요.
술어 속성:
static- 프로시저가 정적인 경우.dynamic- 프로시저가 동적인 경우.private- 프로시저가 비공개인 경우.public- 프로시저가 공개인 경우.monofile- 프로시저가 단일파일인 경우.multifile- 프로시저가 멀티파일인 경우.user- 프로시저가 사용자 정의 프로시저인 경우.built_in- 프로시저가 내장 술어 또는 제어 구조인 경우.built_in_fd- 프로시저가 FD 내장 술어인 경우.control_construct- 프로시저가 제어 구조인 경우(7.2절).native_code- 프로시저가 네이티브 코드로 컴파일된 경우.prolog_file(File)- 프로시저를 읽은 소스 파일.prolog_line(Line)- 소스 파일의 줄 번호.meta_predicate(Head)- 프로시저가 메타-술어이면Head를 머리-패턴과 통일. 머리-패턴은 술어와 같은 이름과 아리티를 가진 복합 항이며, 항의 각 인자는 메타 인자 지정자(meta argument specifier)로, 다음과 같아요:- 정수 N - 인자가 주어진 인자 항보다 N개 더 많은 인자를 가진 술어를 참조하는 데 사용되는 항(예:
call(0)). :- 인자가 모듈에 민감하지만 직접적으로 술어를 참조하지는 않음(예:consult(:)).-- 인자가 모듈에 민감하지 않고 진입 시 unbound.?- 인자가 모듈에 민감하지 않고 모드가 불특정.+- 인자가 모듈에 민감하지 않고 진입 시 bound(즉 nonvar).
- 정수 N - 인자가 주어진 인자 항보다 N개 더 많은 인자를 가진 술어를 참조하는 데 사용되는 항(예:
Errors
Head가 변수도 callable 항도 아님 -type_error(callable, Head)Property가 변수도 술어 속성 항도 아님 -domain_error(predicate_property, Property)Property = prolog_file(File)이고File이 변수도 원자도 아님 -type_error(atom, File)Property = prolog_line(Line)이고Line이 변수도 정수도 아님 -type_error(integer, Line)
Portability: GNU Prolog 술어.