2013-04-27 3 views
0

다양한 조건부에 걸쳐있는 요소를 목록에 추가해야하는 문제가 있습니다. 인수 기반리스트를 사용하는 대신 동적리스트 술어를 사용하기로했습니다. 나는 간단한 예를 아래에서 볼 수있다. 내가 처음에 그것을 사용할 때 잘 작동하지만 지금은 X로 모든 인수를 사용하면 프로그램 및 재 컴파일을 닫은 후에도 목록에서 이전 인수 데이터를 검색하는 유지합니다. 누가 그걸 잘못 알고 있니?예측할 수없는 동적 조건부 동작

//list declarations 
:- dynamic listD/1. 
listD([]). 

//pushes X onto the list then retrieves the entire list for verification 
sample(X):- 
    assert(listD(X)), 
    listD(Y), 
    write(Y). 


Example usage 

sample([adam]). 
//prints adam fine 
sample([fred]). 
//prints adam again 
+0

적절한 프롤로그를 얻는 데 시간이 걸릴 수 있습니다. 가능한 한 어설 션을 피하십시오. – CapelliC

+0

이 내 도움이 되었습니까? 아직도 다른 것이 명확하지 않은가? –

답변

0

retractall을 사용하면 시작할 때 상태를 정리할 수 있습니다.

sample(X):- 
    retractall(listD(_)), 
    assert(listD(X)), 
    listD(Y), 
    write(Y).