변수 이름 부여/번호 부여
변수 이름 부여/번호 부여
변수에 이름이나 번호를 부여하는 내장 술어들을 설명해요.
본문
name_singleton_vars/1
Templates
name_singleton_vars(?term)
Description
name_singleton_vars(Term)은 Term에 나타나는 각 싱글턴 변수를 '$VARNAME'('_') 형태의 항에 바인딩해요. 이런 항은 write_term/3에 의해 변수 이름으로 출력될 수 있어요(8.14.6절).
Errors: 없음.
Portability: GNU Prolog 술어.
name_query_vars/2
Templates
name_query_vars(+list, ?list)
Description
name_query_vars(List, Rest)는 List의 각 요소에 대해, Name = Var 형태(여기서 Name은 원자, Var은 변수)라면 Var을 항 '$VARNAME'(Name)에 바인딩해요. 이런 항은 write_term/3에 의해 변수 이름으로 출력될 수 있어요(8.14.6절).
Rest는 바인딩을 만들지 않은 List의 요소들의 리스트와 통일돼요. 이 술어는 read_term/3이 variable_names(List) 또는 singletons(List) 옵션(8.14.1절)으로 반환한 변수 리스트에 이름을 붙이는 방법으로 제공돼요.
Errors
List가 부분 리스트 -instantiation_errorList가 부분 리스트도 리스트도 아님 -type_error(list, List)Rest가 부분 리스트도 리스트도 아님 -type_error(list, Rest)
Portability: GNU Prolog 술어.
bind_variables/2, numbervars/3, numbervars/1
Templates
bind_variables(?term, +var_binding_option_list)
numbervars(?term, +integer, ?integer)
numbervars(?term)
Description
bind_variables(Term, Options)는 Options가 주는 옵션에 따라 Term에 나타나는 각 변수를 바인딩해요.
변수 바인딩 옵션: Options는 변수 바인딩 옵션들의 리스트예요. 이 리스트에 모순된 옵션이 있으면 가장 오른쪽의 옵션이 적용돼요. 가능한 옵션은 다음과 같아요:
numbervars-Term에 나타나는 각 변수를'$VAR'(N)형태의 항에 바인딩하도록 지정(여기서 N은 정수). 이런 항은write_term/3에 의해 변수 이름으로 출력될 수 있어요(8.14.6절). 이 값이 기본값이에요.namevars-Term에 나타나는 각 변수를'$VARNAME'(Name)형태의 항에 바인딩하도록 지정(여기서Name은write_term/3이'$VAR'(N)형태의 항(여기서 N은 정수)을 보고 출력할 원자). 이런 항은write_term/3에 의해 변수 이름으로 출력될 수 있어요(8.14.6절).numbervars의 대안이에요.from(From)-Term의 변수에 번호/이름을 부여하는 데 사용할 첫 정수 N. 기본값은 0.next(Next)-bind_variables/2가 성공하면Next는Term의 변수를 바인딩하는 데 사용한 (마지막 정수 N)+1과 통일돼요.exclude(List)-Term의 변수를 바인딩할 때 충돌을 피하기 위해List에 나타나는 모든 변수 이름을 수집. 정확히는,From이상의 수 N은 다음 경우에Term의 변수를 바인딩하는 데 사용되지 않아요:List의'$VAR'(N)형태 또는'$VARNAME'(Name)형태의 하위 항이 있을 때. 여기서Name은write_term/3이'$VAR'(N)형태의 항을 보고 출력할 상수.List의 어떤 요소가Name = Var형태일 때. 여기서Name은write_term/3이'$VAR'(N)형태의 항을 보고 출력할 원자. 이 경우는read_term/3(variable_names(List)또는singletons(List)옵션 사용, 8.14.1절)과name_query_vars/2(8.5.2절)가 반환한 리스트를 허용하기 위한 것이에요.
numbervars(Term, From, Next)는 bind_variables(Term, [from(From), next(Next)])와 동일하며, 즉 Term의 각 변수는 From ≤ N < Next인 '$VAR'(N)에 바인딩돼요. numbervars(Term)은 numbervars(Term, 0, _)와 동일해요.
항의 변수 집합을 반환하는 term_variables(8.4.5절)도 참고하세요.
Errors
Options가 부분 리스트이거나 변수인 요소 E를 가진 리스트 -instantiation_errorOptions가 부분 리스트도 리스트도 아님 -type_error(list, Options)Options리스트의 어떤 요소 E가 변수도 변수 바인딩 옵션도 아님 -domain_error(var_binding_option, E)From이 변수 -instantiation_errorFrom이 변수도 정수도 아님 -type_error(integer, From)Next가 변수도 정수도 아님 -type_error(integer, Next)List가 부분 리스트 -instantiation_errorList가 부분 리스트도 리스트도 아님 -type_error(list, List)
Portability: GNU Prolog 술어.
term_ref/2
Templates
term_ref(+term, ?integer)
term_ref(?term, +integer)
Description
term_ref(Term, Ref)는 Term의 내부 참조가 Ref이면 성공해요. 이 술어는 항의 내부 참조를 얻거나 주어진 참조와 연관된 항을 얻는 데 쓸 수 있어요. 두 개의 동일한 항이 서로 다른 내부 참조를 가질 수 있다는 점을 주의하세요. 이 술어를 쓰는 좋은 방법은 먼저 주어진 항의 내부 참조를 기록하고 나중에 이 참조로 항을 다시 얻는 것이에요.
Errors
Term과Ref가 모두 변수 -instantiation_errorRef가 변수도 정수도 아님 -type_error(integer, Ref)Ref가 정수 < 0 -domain_error(not_less_than_zero, Ref)
Portability: GNU Prolog 술어.