2012-09-21 5 views
1

원자 B에 원자 A에있는 값을 할당해야하는 내 술어에 기본 사례가 있습니다. 가능하지만 어떤 방법이 있습니까?다른 원자에 원자를 할당하는 프롤로그

내 술어는 원자 (EXPR) 이후, 나는 여러 가지 방법을 시도했지만 아무것도 못했습니다 없습니다에서

montage(Expr,Out) :- atom(Expr), .... 

다음과 같다.

예를 들어 Expr이 'a'이고 Out이 'a11'이고 Expr이 원자이면 Out에 'a'가 할당됩니다.

도움을 미리 감사드립니다.

+0

몽타주 (Expr, Expr)를 사용해 보셨습니까? – Borgleader

+0

오, 다른 것을 추가하는 것을 잊어 버렸습니다. 예를 들어이 특별한 경우 Expr은 'a'이고 Out은 'a11'이므로 Expr이 원자이면 'a'가 Out에 할당됩니다. 죄송합니다,이 부분에 놓치 셨습니다. – edelweiss

답변

3

프롤로그에서 사용자는 을 통합하지 않습니다.

?- a = a11. 
false. 

이 이미 그 원자와 통일을 통해 바인딩 변수 마찬가지입니다 : 그들은 서로 다른 원자 때문에 당신은 a11a를 통합 할 수없는 사실

?- X = a, Y = a11, X = Y. 
false. 

이 때 = 조항의 양쪽 (아무 변수도 포함하지 않음) 통일은 용어 평등을 확인하는 것으로 감소합니다. 그렇기 때문에 =을 사용하여 변수를 바인딩하고 패턴 일치를 수행 할 수 있습니다.

할당하지 않고 작업하려면 프로그램 논리를 재고해야합니다.